Skip to content

Singular/LELA

Repository files navigation

Library for Exact Linear Algebra (LELA)
=======================================

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
lela-users@googlegroups.com

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.

About

Library for exact linear algebra, a C++ template-library based originally on LinBox intended for F4-like implementations

Resources

License

Stars

Watchers

Forks

Packages

No packages published