Matrix Libraries for Java
Here is a list of Java libraries for linear algebra with their features. Hope this helps you to pick
the best library for you!
Colt
These are the features of the Colt library:
- Colt Current Version: 1.2.0
- Colt Latest Release: 2004
- Colt License: BSD
- Colt Supports Java 1.4
- Colt Supports Java 5
- Colt Supports Java 6
- Colt Supports Java 7
- Colt Supports Java 8
- Colt Stores Dense Data in Single Array
- Colt Stores Sparse Data in DOK (dictionary of key-value pairs)
- Colt Can Store Double Values
- Colt Can Store Strings
- Colt Can Store Objects
- Colt Supports 2D Matrix
- Colt Supports 3D Matrix
- Colt Supports In-Place Operations
- Colt Supports Matrix Transpose: yes (flags matrix as transposed)
- Colt Supports Matrix Multiply/Divide
- Colt Supports Plus/Minus
- Colt Supports Matrix Inverse
- Colt Supports Solve Linear System: square, tall
- Colt Supports LU Decomposition: square, tall
- Colt Supports QR Decomposition: square, tall
- Colt Supports Singular Value Decomposition: all
- Colt Supports Cholesky Decomposition
- Colt Supports Eigen Decomposition
- Colt Matrix is Serializable
- Colt Number of Values per Dimension: 231-1
- Colt Maximum Matrix Size: 16GB (Single Array)
- Colt Homepage: Colt Homepage
Commons Math
These are the features of the Commons Math library:
- Commons Math Current Version: 3.2
- Commons Math Latest Release: 2013
- Commons Math License: Apache
- Commons Math Supports Java 5
- Commons Math Supports Java 6
- Commons Math Supports Java 7
- Commons Math Supports Java 8
- Commons Math Stores Dense Data in 2D Array
- Commons Math Stores Dense Data in Block Storage
- Commons Math Stores Sparse Data in DOK (dictionary of key-value pairs)
- Commons Math Can Store Double Values
- Commons Math Can Store BigDecimal Values
- Commons Math Can Store Strings
- Commons Math Can Store Objects
- Commons Math Can Store Generic Objects
- Commons Math Can Store Complex Numbers
- Commons Math Supports 2D Matrix
- Commons Math Supports In-Place Operations
- Commons Math Supports Matrix Transpose
- Commons Math Supports Matrix Multiply/Divide
- Commons Math Supports Plus/Minus
- Commons Math Supports Matrix Inverse
- Commons Math Supports Solve Linear System: square, tall
- Commons Math Supports LU Decomposition: square (non-singular matrices only)
- Commons Math Supports QR Decomposition: all
- Commons Math Supports Singular Value Decomposition: all
- Commons Math Supports Cholesky Decomposition
- Commons Math Supports Eigen Decomposition: yes (symmetric matrices only)
- Commons Math Matrix is Serializable
- Commons Math Number of Values per Dimension: 231-1
- Commons Math Maximum Matrix Size: ~64GB (RAM)
- Commons Math Homepage: Commons Math Homepage
EJML
These are the features of the EJML library:
- EJML Current Version: 0.25
- EJML Latest Release: 2014
- EJML License: Apache
- EJML Supports Java 6
- EJML Supports Java 7
- EJML Supports Java 8
- EJML Stores Dense Data in Single Array
- EJML Stores Dense Data in Block Storage
- EJML Can Store Double Values
- EJML Supports 2D Matrix
- EJML Supports In-Place Operations
- EJML Supports Matrix Transpose
- EJML Supports Matrix Multiply/Divide
- EJML Supports Plus/Minus
- EJML Supports Matrix Inverse
- EJML Supports Solve Linear System: square, tall
- EJML Supports LU Decomposition: all
- EJML Supports QR Decomposition: square
- EJML Supports Singular Value Decomposition: all
- EJML Supports Cholesky Decomposition: yes (error in implementation)
- EJML Supports Eigen Decomposition
- EJML Matrix is Serializable
- EJML Number of Values per Dimension: 231-1
- EJML Maximum Matrix Size: 16GB (Single Array)
- EJML Homepage: EJML
Homepage
JAMA
These are the features of the JAMA library:
- JAMA Current Version: 1.0.3
- JAMA Latest Release: 2012
- JAMA License: PD
- JAMA Supports Java 1.4
- JAMA Supports Java 5
- JAMA Supports Java 6
- JAMA Supports Java 7
- JAMA Supports Java 8
- JAMA Stores Dense Data in 2D Array
- JAMA Can Store Double Values
- JAMA Supports 2D Matrix
- JAMA Supports Matrix Transpose
- JAMA Supports Matrix Multiply/Divide
- JAMA Supports Plus/Minus
- JAMA Supports Matrix Inverse
- JAMA Supports Solve Linear System: square, tall
- JAMA Supports LU Decomposition: square, tall
- JAMA Supports QR Decomposition: square, tall
- JAMA Supports Singular Value Decomposition: square, tall
- JAMA Supports Cholesky Decomposition
- JAMA Supports Eigen Decomposition
- JAMA Matrix is Serializable
- JAMA Number of Values per Dimension: 231-1
- JAMA Maximum Matrix Size: ~64GB (RAM)
- JAMA Homepage: JAMA Homepage
jblas
These are the features of the jblas library:
- jblas Current Version: 1.2.3
- jblas Latest Release: 2013
- jblas License: BSD
- jblas Supports Java 5
- jblas Supports Java 6
- jblas Supports Java 7
- jblas Supports Java 8
- jblas Stores Dense Data in Single Array
- jblas Can Store Double Values
- jblas Can Store Float Values
- jblas Can Store Complex Numbers
- jblas Supports 2D Matrix
- jblas Uses Multi-Threaded Operations: yes (using native machine code)
- jblas Supports In-Place Operations
- jblas Supports Matrix Transpose
- jblas Supports Matrix Multiply/Divide
- jblas Supports Plus/Minus
- jblas Supports Matrix Inverse
- jblas Supports Solve Linear System: square
- jblas Supports LU Decomposition: all
- jblas Supports Cholesky Decomposition
- jblas Supports Eigen Decomposition: yes (symmetric matrices only)
- jblas Matrix is Serializable
- jblas Number of Values per Dimension: 231-1
- jblas Maximum Matrix Size: 16GB (Single Array)
- jblas Homepage: jblas Homepage
JLinAlg
These are the features of the JLinAlg library:
- JLinAlg Current Version: 0.6
- JLinAlg Latest Release: 2009
- JLinAlg License: GPL
- JLinAlg Supports Java 6
- JLinAlg Supports Java 7
- JLinAlg Supports Java 8
- JLinAlg Stores Dense Data in 2D Array
- JLinAlg Can Store Double Values
- JLinAlg Can Store BigDecimal Values
- JLinAlg Can Store Strings
- JLinAlg Can Store Objects
- JLinAlg Can Store Generic Objects
- JLinAlg Can Store Complex Numbers
- JLinAlg Supports 2D Matrix
- JLinAlg Supports In-Place Operations
- JLinAlg Supports Matrix Transpose
- JLinAlg Supports Matrix Multiply/Divide
- JLinAlg Supports Plus/Minus
- JLinAlg Supports Matrix Inverse
- JLinAlg Supports Solve Linear System: no (only for $A \cdot X = \mbox{vector}$)
- JLinAlg Matrix is Serializable
- JLinAlg Number of Values per Dimension: 231-1
- JLinAlg Maximum Matrix Size: ~64GB (RAM)
- JLinAlg Homepage: JLinAlg Homepage
JMathArray
These are the features of the JMathArray library:
- JMathArray Current Version:
- JMathArray Latest Release: 2008
- JMathArray License: BSD
- JMathArray Supports Java 5
- JMathArray Supports Java 6
- JMathArray Supports Java 7
- JMathArray Supports Java 8
- JMathArray Stores Dense Data in 2D Array
- JMathArray Can Store Double Values
- JMathArray Supports 2D Matrix
- JMathArray Supports Matrix Transpose
- JMathArray Supports Matrix Multiply/Divide
- JMathArray Supports Plus/Minus
- JMathArray Supports Matrix Inverse
- JMathArray Supports Solve Linear System: square, tall
- JMathArray Supports LU Decomposition: square, tall
- JMathArray Supports QR Decomposition: square, tall
- JMathArray Supports Singular Value Decomposition: square, tall
- JMathArray Supports Cholesky Decomposition
- JMathArray Supports Eigen Decomposition
- JMathArray Matrix is Serializable
- JMathArray Number of Values per Dimension: 231-1
- JMathArray Maximum Matrix Size: ~64GB (RAM)
- JMathArray Homepage: JMathArray Homepage
JMatrices
These are the features of the JMatrices library:
- JMatrices Current Version: 0.6
- JMatrices Latest Release: 2004
- JMatrices License: LGPL
- JMatrices Supports Java 1.4
- JMatrices Supports Java 5
- JMatrices Supports Java 6
- JMatrices Supports Java 7
- JMatrices Supports Java 8
- JMatrices Stores Dense Data in 2D Array
- JMatrices Can Store Double Values
- JMatrices Can Store BigDecimal Values
- JMatrices Can Store Complex Numbers
- JMatrices Supports 2D Matrix
- JMatrices Supports Matrix Transpose
- JMatrices Supports Matrix Multiply/Divide
- JMatrices Supports Plus/Minus
- JMatrices Supports Matrix Inverse
- JMatrices Supports Solve Linear System: square, tall
- JMatrices Supports LU Decomposition: square, tall
- JMatrices Supports QR Decomposition: square, tall
- JMatrices Supports Singular Value Decomposition: square
- JMatrices Supports Cholesky Decomposition
- JMatrices Supports Eigen Decomposition
- JMatrices Matrix is Serializable
- JMatrices Number of Values per Dimension: 231-1
- JMatrices Maximum Matrix Size: ~64GB (RAM)
- JMatrices Homepage: JMatrices Homepage
JSci
These are the features of the JSci library:
- JSci Current Version: 1.5.2
- JSci Latest Release: 2009
- JSci License: LGPL
- JSci Supports Java 1.4
- JSci Supports Java 5
- JSci Supports Java 6
- JSci Supports Java 7
- JSci Supports Java 8
- JSci Stores Dense Data in 2D Array
- JSci Stores Sparse Data in Yale Format
- JSci Can Store Double Values
- JSci Can Store Complex Numbers
- JSci Supports 2D Matrix
- JSci Supports Matrix Transpose
- JSci Supports Matrix Multiply/Divide
- JSci Supports Plus/Minus
- JSci Supports Matrix Inverse
- JSci Supports Solve Linear System: no (only for $A \cdot X = \mbox{vector}$)
- JSci Supports LU Decomposition: square (non-singular matrices only)
- JSci Supports QR Decomposition: square
- JSci Supports Singular Value Decomposition: square
- JSci Supports Cholesky Decomposition
- JSci Supports Eigen Decomposition: yes (symmetric matrices only) (results not directly
accessible)
- JSci Matrix is Serializable
- JSci Number of Values per Dimension: 231-1
- JSci Maximum Matrix Size: ~64GB (RAM)
- JSci Homepage: JSci Homepage
JScience
These are the features of the JScience library:
- JScience Current Version: 4.3.1
- JScience Latest Release: 2007
- JScience License: BSD
- JScience Supports Java 5
- JScience Supports Java 6
- JScience Supports Java 7
- JScience Supports Java 8
- JScience Stores Dense Data in 2D Array
- JScience Stores Sparse Data in DOK (dictionary of key-value pairs)
- JScience Stores Sparse Data in LIL (list of lists)
- JScience Can Store Double Values
- JScience Can Store Strings
- JScience Can Store Objects
- JScience Can Store Generic Objects
- JScience Can Store Complex Numbers
- JScience Supports 2D Matrix
- JScience Uses Multi-Threaded Operations
- JScience Supports Matrix Transpose: yes (flags matrix as transposed)
- JScience Supports Matrix Multiply/Divide
- JScience Supports Plus/Minus
- JScience Supports Matrix Inverse
- JScience Supports Solve Linear System: square
- JScience Supports LU Decomposition: square (non-singular matrices only)
- JScience Number of Values per Dimension: 231-1
- JScience Maximum Matrix Size: ~64GB (RAM)
- JScience Homepage: JScience Homepage
la4j
These are the features of the la4j library:
- la4j Current Version: 0.4.9
- la4j Latest Release: 2014
- la4j License: Apache
- la4j Supports Java 5
- la4j Supports Java 6
- la4j Supports Java 7
- la4j Supports Java 8
- la4j Stores Dense Data in 2D Array
- la4j Stores Sparse Data in CRS/CCS (compressed sparse row/column storare)
- la4j Can Store Double Values
- la4j Supports 2D Matrix
- la4j Supports In-Place Operations
- la4j Supports Matrix Transpose
- la4j Supports Matrix Multiply/Divide
- la4j Supports Plus/Minus
- la4j Supports Matrix Inverse
- la4j Supports Solve Linear System: square, tall
- la4j Supports LU Decomposition: square
- la4j Supports QR Decomposition: square, tall
- la4j Supports Singular Value Decomposition: all
- la4j Supports Cholesky Decomposition
- la4j Supports Eigen Decomposition
- la4j Matrix is Serializable
- la4j Number of Values per Dimension: 231-1
- la4j Maximum Matrix Size: ~64GB (RAM)
- la4j Homepage: la4j Homepage
Mantissa
These are the features of the Mantissa library:
- Mantissa Current Version: 7.2
- Mantissa Latest Release: 2007
- Mantissa License: BSD
- Mantissa Supports Java 1.4
- Mantissa Supports Java 5
- Mantissa Supports Java 6
- Mantissa Supports Java 7
- Mantissa Supports Java 8
- Mantissa Stores Dense Data in Single Array
- Mantissa Can Store Double Values
- Mantissa Supports 2D Matrix
- Mantissa Supports In-Place Operations
- Mantissa Supports Matrix Transpose
- Mantissa Supports Matrix Multiply/Divide
- Mantissa Supports Plus/Minus
- Mantissa Supports Matrix Inverse
- Mantissa Supports Solve Linear System: square
- Mantissa Supports LU Decomposition: square (results not directly accessible)
- Mantissa Matrix is Serializable
- Mantissa Number of Values per Dimension: 231-1
- Mantissa Maximum Matrix Size: 16GB (Single Array)
- Mantissa Homepage: Mantissa
Homepage
MTJ
These are the features of the MTJ library:
- MTJ Current Version: 1.0.1
- MTJ Latest Release: 2013
- MTJ License: LGPL
- MTJ Supports Java 5
- MTJ Supports Java 6
- MTJ Supports Java 7
- MTJ Supports Java 8
- MTJ Stores Dense Data in Single Array
- MTJ Stores Sparse Data in LIL (list of lists)
- MTJ Stores Sparse Data in CRS/CCS (compressed sparse row/column storare)
- MTJ Stores Sparse Data in CDS (compressed sparse diagonal)
- MTJ Can Store Double Values
- MTJ Supports 2D Matrix
- MTJ Uses Multi-Threaded Operations: yes (using native machine code)
- MTJ Supports In-Place Operations
- MTJ Supports Matrix Transpose
- MTJ Supports Matrix Multiply/Divide
- MTJ Supports Plus/Minus
- MTJ Supports Matrix Inverse
- MTJ Supports Solve Linear System: square, tall
- MTJ Supports LU Decomposition: all (error in implementation)
- MTJ Supports QR Decomposition: square, tall
- MTJ Supports Singular Value Decomposition: all
- MTJ Supports Cholesky Decomposition: yes (error in implementation)
- MTJ Supports Eigen Decomposition: yes (symmetric matrices only)
- MTJ Matrix is Serializable
- MTJ Number of Values per Dimension: 231-1
- MTJ Maximum Matrix Size: 16GB (Single Array)
- MTJ Homepage: MTJ Homepage
ojAlgo
These are the features of the ojAlgo library:
- ojAlgo Current Version: 35.0
- ojAlgo Latest Release: 2013
- ojAlgo License: MIT
- ojAlgo Supports Java 5
- ojAlgo Supports Java 6
- ojAlgo Supports Java 7
- ojAlgo Supports Java 8
- ojAlgo Stores Dense Data in Single Array
- ojAlgo Can Store Double Values
- ojAlgo Can Store Float Values
- ojAlgo Can Store BigDecimal Values
- ojAlgo Can Store Complex Numbers
- ojAlgo Supports 2D Matrix
- ojAlgo Uses Multi-Threaded Operations
- ojAlgo Supports In-Place Operations
- ojAlgo Supports Matrix Transpose: yes (flags matrix as transposed)
- ojAlgo Supports Matrix Multiply/Divide
- ojAlgo Supports Plus/Minus
- ojAlgo Supports Matrix Inverse
- ojAlgo Supports Solve Linear System: square, tall
- ojAlgo Supports LU Decomposition: all
- ojAlgo Supports QR Decomposition: all
- ojAlgo Supports Singular Value Decomposition: all
- ojAlgo Supports Cholesky Decomposition
- ojAlgo Supports Eigen Decomposition
- ojAlgo Matrix is Serializable
- ojAlgo Number of Values per Dimension: 231-1
- ojAlgo Maximum Matrix Size: 16GB (Single Array)
- ojAlgo Homepage: ojAlgo Homepage
Parallel Colt
These are the features of the Parallel Colt library:
- Parallel Colt Current Version: 0.10.1
- Parallel Colt Latest Release: 2013
- Parallel Colt License: BSD
- Parallel Colt Supports Java 1.4
- Parallel Colt Supports Java 5
- Parallel Colt Supports Java 6
- Parallel Colt Supports Java 7
- Parallel Colt Supports Java 8
- Parallel Colt Stores Dense Data in Single Array
- Parallel Colt Stores Dense Data in 2D Array
- Parallel Colt Stores Sparse Data in DOK (dictionary of key-value pairs)
- Parallel Colt Stores Sparse Data in LIL (list of lists)
- Parallel Colt Stores Sparse Data in CRS/CCS (compressed sparse row/column storare)
- Parallel Colt Can Store Double Values
- Parallel Colt Can Store Float Values
- Parallel Colt Can Store Strings
- Parallel Colt Can Store Objects
- Parallel Colt Can Store Complex Numbers
- Parallel Colt Supports 2D Matrix
- Parallel Colt Supports 3D Matrix
- Parallel Colt Uses Multi-Threaded Operations
- Parallel Colt Supports In-Place Operations
- Parallel Colt Supports Matrix Transpose: yes (flags matrix as transposed)
- Parallel Colt Supports Matrix Multiply/Divide
- Parallel Colt Supports Plus/Minus
- Parallel Colt Supports Matrix Inverse
- Parallel Colt Supports Solve Linear System: square, tall
- Parallel Colt Supports LU Decomposition: square, tall
- Parallel Colt Supports QR Decomposition: square, tall
- Parallel Colt Supports Singular Value Decomposition: all
- Parallel Colt Supports Cholesky Decomposition
- Parallel Colt Supports Eigen Decomposition
- Parallel Colt Matrix is Serializable
- Parallel Colt Number of Values per Dimension: 231-1
- Parallel Colt Maximum Matrix Size: ~64GB (RAM)
- Parallel Colt Homepage: Parallel Colt
Homepage
SST
These are the features of the SST library:
- SST Current Version: 1.11
- SST Latest Release: 2010
- SST License: LGPL
- SST Supports Java 5: yes (jar does not work with Java 5)
- SST Supports Java 6
- SST Supports Java 7
- SST Supports Java 8
- SST Stores Dense Data in Single Array
- SST Stores Sparse Data in DOK (dictionary of key-value pairs)
- SST Can Store Double Values
- SST Can Store Strings
- SST Can Store Objects
- SST Can Store Generic Objects
- SST Can Store Complex Numbers
- SST Supports 2D Matrix
- SST Supports 3D Matrix
- SST Supports >3D Matrix
- SST Supports In-Place Operations
- SST Supports Matrix Transpose
- SST Supports Matrix Multiply/Divide
- SST Supports Plus/Minus
- SST Supports Matrix Inverse
- SST Supports Singular Value Decomposition: all
- SST Supports Eigen Decomposition
- SST Number of Values per Dimension: 231-1
- SST Maximum Matrix Size: 16GB (Single Array)
- SST Homepage: SST Homepage
UJMP
These are the features of the UJMP library:
- UJMP Current Version: 0.3.0
- UJMP Latest Release: 2014
- UJMP License: LGPL
- UJMP Supports Java 5
- UJMP Supports Java 6
- UJMP Supports Java 7
- UJMP Supports Java 8
- UJMP Stores Dense Data in Single Array
- UJMP Stores Dense Data in 2D Array
- UJMP Stores Dense Data in Block Storage
- UJMP Stores Sparse Data in DOK (dictionary of key-value pairs)
- UJMP Stores Sparse Data in LIL (list of lists)
- UJMP Can Store Double Values
- UJMP Can Store Float Values
- UJMP Can Store BigDecimal Values
- UJMP Can Store Strings
- UJMP Can Store Objects
- UJMP Can Store Generic Objects
- UJMP Supports 2D Matrix
- UJMP Supports 3D Matrix
- UJMP Supports >3D Matrix
- UJMP Uses Multi-Threaded Operations
- UJMP Supports In-Place Operations
- UJMP Supports Matrix Transpose
- UJMP Supports Matrix Multiply/Divide
- UJMP Supports Plus/Minus
- UJMP Supports Matrix Inverse
- UJMP Supports Solve Linear System: square, tall
- UJMP Supports LU Decomposition: all
- UJMP Supports QR Decomposition: square, tall
- UJMP Supports Singular Value Decomposition: all
- UJMP Supports Cholesky Decomposition
- UJMP Supports Eigen Decomposition
- UJMP Can Import/Export CSV
- UJMP Can Import/Export JDBC
- UJMP Matrix is Serializable
- UJMP Number of Values per Dimension: 263-1
- UJMP Maximum Matrix Size: ~4TB (Disk)
- UJMP Homepage: UJMP Homepage
vecmath
These are the features of the vecmath library:
- vecmath Current Version: 1.5.2
- vecmath Latest Release: 2001?
- vecmath License: other
- vecmath Supports Java 5
- vecmath Supports Java 6
- vecmath Supports Java 7
- vecmath Supports Java 8
- vecmath Stores Dense Data in 2D Array
- vecmath Can Store Double Values
- vecmath Supports 2D Matrix
- vecmath Supports In-Place Operations
- vecmath Supports Matrix Transpose
- vecmath Supports Plus/Minus
- vecmath Supports Matrix Inverse
- vecmath Supports LU Decomposition: square (non-singular matrices only)
- vecmath Supports Singular Value Decomposition: square (error in implementation)
- vecmath Matrix is Serializable
- vecmath Number of Values per Dimension: 231-1
- vecmath Maximum Matrix Size: ~64GB (RAM)
- vecmath Homepage: vecmath Homepage