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.

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.

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.

For more details of the implementation, please refer to the source code documentation. The C and C++ source code can be found in the `src`

directory of the **linboxing** package, and contains comments which can be converted into HTML documentation using `doxygen`

(which must therefore be available on your system). Create this documentation using the following command:

cd src doxygen Doxyfile |

Point your web browser at `src/html/index.html`

to browse the documentation.

generated by GAPDoc2HTML