<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <title>GAP (linboxing) - Chapter 4: Implementation</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <meta name="generator" content="GAPDoc2HTML" /> <link rel="stylesheet" type="text/css" href="manual.css" /> </head> <body> <div class="chlinktop"><span class="chlink1">Goto Chapter: </span><a href="chap0.html">Top</a> <a href="chap1.html">1</a> <a href="chap2.html">2</a> <a href="chap3.html">3</a> <a href="chap4.html">4</a> <a href="chapInd.html">Ind</a> </div> <div class="chlinkprevnexttop"> <a href="chap0.html">Top of Book</a> <a href="chap3.html">Previous Chapter</a> <a href="chapInd.html">Next Chapter</a> </div> <p><a id="X78289A737AF28B39" name="X78289A737AF28B39"></a></p> <div class="ChapSects"><a href="chap4.html#X78289A737AF28B39">4 <span class="Heading">Implementation</span></a> </div> <h3>4 <span class="Heading">Implementation</span></h3> <p>The <strong class="pkg">linboxing</strong> package consists three parts. The first part is written in <strong class="pkg">GAP</strong>, and this consists of test routines and wrappers for functions in the <strong class="pkg">linboxing</strong> kernel module. The second part is the kernel module's interface to <strong class="pkg">GAP</strong>, which is written in C. This handles the interface between <strong class="pkg">GAP</strong> and the third part, which is the C++ code which calls functions in the LinBox library.</p> <p>In the C++ part of the kernel module, the <strong class="pkg">GAP</strong> 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 <strong class="pkg">GAP</strong> objects.</p> <p>Currently, all <strong class="pkg">GAP</strong> 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 <strong class="pkg">GAP</strong> to represent sparse matrices. There are plans to overhaul matrix objects in <strong class="pkg">GAP</strong>, and once sparse matrix objects are provided in <strong class="pkg">GAP</strong>, these should be converted into LinBox sparse matrices.</p> <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 <code class="file">src</code> directory of the <strong class="pkg">linboxing</strong> package, and contains comments which can be converted into HTML documentation using <code class="file">doxygen</code> (which must therefore be available on your system). Create this documentation using the following command:</p> <table class="example"> <tr><td><pre> cd src doxygen Doxyfile </pre></td></tr></table> <p>Point your web browser at <code class="file">src/html/index.html</code> to browse the documentation.</p> <div class="chlinkprevnextbot"> <a href="chap0.html">Top of Book</a> <a href="chap3.html">Previous Chapter</a> <a href="chapInd.html">Next Chapter</a> </div> <div class="chlinkbot"><span class="chlink1">Goto Chapter: </span><a href="chap0.html">Top</a> <a href="chap1.html">1</a> <a href="chap2.html">2</a> <a href="chap3.html">3</a> <a href="chap4.html">4</a> <a href="chapInd.html">Ind</a> </div> <hr /> <p class="foot">generated by <a href="http://www.math.rwth-aachen.de/~Frank.Luebeck/GAPDoc">GAPDoc2HTML</a></p> </body> </html>