<!-- LINBOXING - intro.xml Introduction 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: intro.xml 92 2008-01-30 15:34:25Z pas $ --> <!-- ********************************************************** --> <Chapter> <Heading>Introduction</Heading> The LinBox C++ library (<URL>http://www.linalg.org</URL>) performs exact linear algebra and provides a set of routines for the solution of linear algebra problems such as rank, determinant, and the solution of linear systems. It provides representations for both sparse and dense matrices over integers and finite fields. It has a particular emphasis on black-box matrix methods (which are very efficient over sparse matrices), but increasingly also provides elimination-based routines for dense matrices using the industry-standard BLAS numeric routines. <P/> &GAP; (<URL>http://www.gap-system.org</URL>) is a system for computational discrete algebra, with particular emphasis on Computational Group Theory. It provides good implementations of exact linear algebra routines on dense matrices over all common fields and the integers. Typically, &GAP;'s versions are faster than LinBox for small finite fields (i.e. order less than 256), but LinBox is much faster for larger finite fields and the integers. <P/> The &linboxing; (LinBox-in-GAP) package provides an interface to the LinBox C++ library from &GAP;. It provides alternative versions of &GAP; linear algebra routines which are mapped through to the equivalent LinBox library routines at the &GAP; kernel level. The result is linear algebra routines in &GAP; that are, in the majority of cases, considerably faster than the native &GAP; versions, and which scale better with matrix size. See the &linboxing; website at <URL>http://www.maths.nuigalway.ie/~pas/CHA/linboxing/index.shtml</URL> for timing examples and speedup estimates. As is typical, this speed is at the expense of memory, since the &GAP; matrices and vector must be copied into a memory format that LinBox can use. <P/> The functions provided by the &linboxing; package are named the same as the &GAP; equivalents, but are all contained within the <C>LinBox</C> record, and so are prefixed with `<C>LinBox.</C>'. The functions provided are <List> <Item><Ref Func="LinBox.Determinant"/></Item> <Item><Ref Func="LinBox.Rank"/></Item> <Item><Ref Func="LinBox.Trace"/></Item> <Item><Ref Func="LinBox.SolutionMat"/></Item> </List> over the integers and prime fields. </Chapter>