LELA is a C++ template-library for computations in (normally) exact linear algebra. It is flexible in two respects:
- the choice of ring over which to compute
- the choice of vector- and matrix-representation, i.e. dense vs. sparse
LELA uses C++ templates to provide the best feasible performance for each of the above choices. It also includes wrappers for some other libraries, such as M4RI (see http://m4ri.sagemath.org/) and CBLAS to make use of highly specialised implementations available in certain cases. All of these dependencies are optional; if the libraries are not present, LELA will fall back to its own routines at a cost of some performance.
An introductory tutorial on the use of LELA may be found in the file doc/tutorial.html
For questions, please make use of our mailing-list at [email protected]
LELA was originally derived from LinBox (see http://www.linalg.org/).
Some key differences between LELA and LinBox are the following:
-
LELA does not have any built-in facilities for black-box linear algebra.
-
LELA uses a completely new system for vector- and matrix-arithmetic. There is a single BLAS-like interface which handles all cases and the underlying mechanism is designed to be versatile and extensible. LinBox in contrast has two separate interfaces (MatrixDomain and VectorDomain vs. fflas) for matrix- and vector-arithmetic, each one with its own advantages and limitations.
-
LELA currently does not implement many of the high-level algorithms which are present in LinBox, particularly for calculations over the integers.
-
LELA has far fewer vector-representation-types over general rings than LinBox: only one for sparse vectors vs. three.
-
LELA has far better support for GF2 than LinBox, including fast word-based operations, a wrapper for M4RI, and a new "hybrid" vector-representation-type which is well suited to elimination problems with sparse matrices over GF(2).
-
LELA defines an interface for rings while LinBox defines an interface for fields. LELA-rings do not assume that all non-zero entries are invertible or that all nonzero elements divide all others. Instead the ring-interface reports whether inversion respectively division was successful.
-
Unlike fflas, LELA does not currently automatically convert matrices with an integral representation to a floating point representation before multiplying them. To take advantage of fast floating-point operations, the user must use such a representation throughout.
-
LELA is licensed under the GNU General Public License (GPL), while LinBox is licensed under the GNU Lesser General Public License (LGPL). This means that it is in general forbidden to use LELA in software with a license which is incompatible with the GPL.
Refer to README_Faugere-Lachartre.md for information about the new implementation.