-
Notifications
You must be signed in to change notification settings - Fork 12
/
README
61 lines (47 loc) · 2.58 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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 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.