Menu
Home

What's in it?

Linear Algebra
Mathematical Programming
Modern Portfolio Theory

License
Download
Documentation
Support
Services

Java Linear Algebra Alternatives

Alternatives to ojAlgo

There are quite a few Open Source (and public domain) Java linear algebra libraries available. Here's a list containing some of them.

There are more - just search for them at Google, SourceForge or similar. Java itself also contain the java.awt.geom.AffineTransform class.

These libraries were designed for different purposes, have different feature sets, are licensed differently and come with different dependencies. ojAlgo isn't always you're best choice!

While JAMA simply has a "Matrix" class ojAlgo has split the design to several parts and separated between interfaces (design) and classes (implementation). This gives you, as a developer, possibilities that JAMA simply does not offer. The main linear algebra interfaces of ojAlgo are BasicMatrix, MatrixStore PhysicalStore and MatrixDecomposition. Each of these interfaces has many implemenations, and most of those some how, eventually, rely on Array2D (and other classes in that package).

ojAlgo extensively uses parameterized types (which requires Java 1.5) and simultaneously maintains matrix implementations for double (primitive), BigDecimal and ComplexNumber.

ojAlgo has no, as in zero, dependencies! Many other Java linear algebra libraries depend on one or more third party libraries. Possibly even libraries written in C or Fortran.

Decompositions – which kinds are available, and for which element types?

The table below shows that ojAlgo contains the five most commen matrix decompositions, and that four of them are (also) available for BigDecimal and ComplexNumber elements. The numbers in the table's body cells indicate the number of different implementations there are for that combination of decomposition and element type.

double
BigDecimal
2
1
1
2
1
1
2
1
1
2
1
1
1

Some linear algebra libraries don't supply any matrix decomposition implementaions (or perhaps only an LU decompostion). Many libraries have copied the JAMA decomposition and ship them as part of their library. ojAlgo contains all the decompositions available with JAMA, but also supplies other (its own) implementations.

Alternatives within ojAlgo

Two implementaion layers: BasicMatrix (higher/application level interface) and MatrixStore/PhysicalStore (lower/algorithm level interface)

Three element types: double, BigDecimal and ComplexNumber

That's 6 (different) matrix implementations. But, there's 1 more. JAMA has been made part of ojAlgo implementing both the BasicMatrix and PhysicalStore interfaces.

double
BigDecimal

 

Bookmark and Share

SourceForge.net LogoProject and site sponsored by Optimatika
Copyright © 2000 - 2010

Using JProfiler from ej-technologies