Introduction
The linear algebra part of OSCAR provides functionality for handling matrices, linear solving, modules, lattices and related structures.
The documentation in this section combines functionality provided directly by OSCAR together with functionality originating from several of its underlying packages, including AbstractAlgebra.jl, Nemo.jl and Hecke.jl.
General textbooks offering details on theory and algorithms include:
Matrix implementations
OSCAR does not rely on Julia's built-in matrix types for two independent reasons:
In matrices with zero rows or columns, only the Julia type of the matrix entries is known. For the algebraic types used throughout OSCAR, this information is generally insufficient to construct new elements, so operations such as
zero(T)cannot always be implemented correctly.Julia's linear algebra is designed around types that embed into the real or complex numbers. For example,
det(ones(Int, (1,1))) == 1.0, so the fact that the result is exactly the integer1is lost. More generally, many of the rings used in OSCAR cannot be embedded into the real or complex numbers at all.
Instead, OSCAR makes use of several matrix implementations which are specifically designed to operate with OSCAR's exact data types. Most exact dense matrix types, together with many associated operations, are provided by Nemo.jl, which in turn builds on the generic matrix interfaces of AbstractAlgebra.jl. In addition, OSCAR defines matrix types for specialized mathematical structures, and wraps matrix types provided by external libraries.
Consequently, OSCAR uses different matrix implementations depending on the underlying mathematical structures and performance requirements. While these implementations share many common operations, they do not all support exactly the same functionality. Where appropriate, conversion between OSCAR matrix types and Julia's native Matrix type is supported.
Topics covered
The main topics covered in this section are:
- Matrix functionality
- Matrix spaces
- Linear solving
- Eigenvalues and -spaces
- Nemo matrices
- Generic matrix algebras
- Sparse linear algebra
- Modules
For developers
For developers interested in the implementation details of matrices, see Matrix implementation.
Tutorials
We encourage you to take a look at the tutorials on linear algebra in OSCAR, which can be found here.
Contact
Please direct questions about this part of OSCAR to the following people:
You can ask questions in the OSCAR Slack.
Alternatively, you can raise an issue on github.