<!-- LINBOXING - implementation.xml Implementation documentation section Paul Smith Copyright (C) 2007-2008 Paul Smith National University of Ireland Galway This file is part of the linboxing GAP package. The linboxing package is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The linboxing package is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. $Id: implementation.xml 99 2008-04-22 11:54:32Z pas $ --> <!-- ********************************************************** --> <Chapter> <Heading>Implementation</Heading> The &linboxing; package consists three parts. The first part is written in &GAP;, and this consists of test routines and wrappers for functions in the &linboxing; kernel module. The second part is the kernel module's interface to &GAP;, which is written in C. This handles the interface between &GAP; and the third part, which is the C++ code which calls functions in the LinBox library. <P/> In the C++ part of the kernel module, the &GAP; objects such as vectors, matrices and their elements are converted into the corresponding LinBox data types. The requested LinBox function is then called, and the result converted back onto &GAP; objects. <P/> Currently, all &GAP; matrices are converted into dense matrices in the LinBox library. LinBox provides good support for sparse matrices, but at present there is no standard way in &GAP; to represent sparse matrices. There are plans to overhaul matrix objects in &GAP;, and once sparse matrix objects are provided in &GAP;, these should be converted into LinBox sparse matrices. <P/> For more details of the implementation, please refer to the source code documentation. The C and C++ source code can be found in the <F>src</F> directory of the &linboxing; package, and contains comments which can be converted into HTML documentation using <F>doxygen</F> (which must therefore be available on your system). Create this documentation using the following command: <Listing> cd src doxygen Doxyfile </Listing> Point your web browser at <F>src/html/index.html</F> to browse the documentation. </Chapter>