GithubHelp home page GithubHelp logo

xinsi / lela Goto Github PK

View Code? Open in Web Editor NEW

This project forked from martani/lela

0.0 1.0 0.0 7.67 MB

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

License: GNU General Public License v3.0

lela's Introduction

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 [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.

New Faugère-Lachartre implemntation

Refer to README_Faugere-Lachartre.md for information about the new implementation.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.