Matrix Libraries for Java
An Overview

This site is intended to give an overview of Java libraries for linear algebra and matrix computations.

About

A couple of years ago, I was looking for a Java library for matrix computations, which was easy to use, versatile enough to handle different types of data, supports sparse matrices, is scalable to many rows/columns/dimensions and, of course, provided multi-threaded methods to yield high performance. Well, finally I ended up developing my own library, the Universal Java Matrix Package, because I could not find everything that I needed in one single package.

However, If you don't need sparse matrices, support for different data tyes, or many dimensions, there are quite a few options from which you can chose. While JAMA and Colt are the most popular libraries, their performance is very poor compared to other alternatives, since they don't support multi-threaded operations. Here is a list of alternatives:

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

Comparison

And now everything in one huge table:

Colt Commons Math EJML JAMA jblas JLinAlg JMathArray JMatrices JSci JScience la4j Mantissa MTJ ojAlgo Parallel Colt SST UJMP vecmath
Current Version 1.2.0 3.2 0.25 1.0.3 1.2.3 0.6 0.6 1.5.2 4.3.1 0.4.9 7.2 1.0.1 35.0 0.10.1 1.11 0.3.0 1.5.2
Latest Release 2004 2013 2014 2012 2013 2009 2008 2004 2009 2007 2014 2007 2013 2013 2013 2010 2014 2001?
License BSD Apache Apache PD BSD GPL BSD LGPL LGPL BSD Apache BSD LGPL MIT BSD LGPL LGPL other
Supports Java 1.4
Supports Java 5
Supports Java 6
Supports Java 7
Supports Java 8
Stores Dense Data in Single Array
Stores Dense Data in 2D Array
Stores Dense Data in Block Storage
Stores Sparse Data in DOK
Stores Sparse Data in LIL
Stores Sparse Data in Yale Format
Stores Sparse Data in CRS/CCS
Stores Sparse Data in CDS
Can Store Double Values
Can Store Float Values
Can Store BigDecimal Values
Can Store Strings
Can Store Objects
Can Store Generic Objects
Can Store Complex Numbers
Supports 2D Matrix
Supports 3D Matrix
Supports >3D Matrix
Uses Multi-Threaded Operations
Supports In-Place Operations
Supports Matrix Transpose
Supports Matrix Multiply/Divide
Supports Plus/Minus
Supports Matrix Inverse
Supports Solve Linear System
Supports LU Decomposition
Supports QR Decomposition
Supports Singular Value Decomposition
Supports Cholesky Decomposition
Supports Eigen Decomposition
Can Import/Export CSV
Can Import/Export JDBC
Matrix is Serializable
Number of Values per Dimension 231-1 231-1 231-1 231-1 231-1 231-1 231-1 231-1 231-1 231-1 231-1 231-1 231-1 231-1 231-1 231-1 263-1 231-1
Maximum Matrix Size 16GB (Single Array) ~64GB (RAM) 16GB (Single Array) ~64GB (RAM) 16GB (Single Array) ~64GB (RAM) ~64GB (RAM) ~64GB (RAM) ~64GB (RAM) ~64GB (RAM) ~64GB (RAM) 16GB (Single Array) 16GB (Single Array) 16GB (Single Array) ~64GB (RAM) 16GB (Single Array) ~4TB (Disk) ~64GB (RAM)
Homepage Colt Homepage Commons Math Homepage EJML Homepage JAMA Homepage jblas Homepage JLinAlg Homepage JMathArray Homepage JMatrices Homepage JSci Homepage JScience Homepage la4j Homepage Mantissa Homepage MTJ Homepage ojAlgo Homepage Parallel Colt Homepage SST Homepage UJMP Homepage vecmath Homepage