Join GitHub today
GitHub is home to over 36 million developers working together to host and review code, manage projects, and build software together.Sign up
Library for exact linear algebra, a C++ template-library based originally on LinBox intended for F4-like implementations
Fetching latest commit…
Cannot retrieve the latest commit at this time.
|Type||Name||Latest commit message||Commit time|
|Failed to load latest commit information.|
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 firstname.lastname@example.org 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.