org.apache.commons.math.linear

## Class OpenMapRealMatrix

- java.lang.Object
- - org.apache.commons.math.linear.AbstractRealMatrix
  - - org.apache.commons.math.linear.OpenMapRealMatrix

All Implemented Interfaces:
  java.io.Serializable, AnyMatrix, RealMatrix, SparseRealMatrix

    public class OpenMapRealMatrix
    extends AbstractRealMatrix
    implements SparseRealMatrix, java.io.Serializable

Sparse matrix implementation based on an open addressed map.

Since:
  2.0
Version:
  $Revision: 811685 $ $Date: 2009-09-05 19:36:48 +0200 (sam. 05 sept. 2009) $
See Also:
  Serialized Form

### Field Summary

Fields
`private int` `columns` Number of columns of the matrix.
`private OpenIntToDoubleHashMap` `entries` Storage for (sparse) matrix elements.
`private int` `rows` Number of rows of the matrix.
`private static long` `serialVersionUID` Serializable version identifier.

### Constructor Summary

Constructors
Constructor and Description
`OpenMapRealMatrix(int rowDimension, int columnDimension)` Build a sparse matrix with the supplied row and column dimensions.
`OpenMapRealMatrix(OpenMapRealMatrix matrix)` Build a matrix by copying another one.

### Method Summary

Methods
`OpenMapRealMatrix` `add(OpenMapRealMatrix m)` Compute the sum of this and `m`.
`OpenMapRealMatrix` `add(RealMatrix m)` Compute the sum of this and m.
`void` `addToEntry(int row, int column, double increment)` Change an entry in the specified row and column.
`private int` `computeKey(int row, int column)` Compute the key to access a matrix element
`OpenMapRealMatrix` `copy()` Returns a (deep) copy of this.
`OpenMapRealMatrix` `createMatrix(int rowDimension, int columnDimension)` Create a new RealMatrix of the same type as the instance with the supplied row and column dimensions.
`int` `getColumnDimension()` Returns the number of columns in the matrix.
`double` `getEntry(int row, int column)` Returns the entry in the specified row and column.
`int` `getRowDimension()` Returns the number of rows in the matrix.
`OpenMapRealMatrix` `multiply(OpenMapRealMatrix m)` Returns the result of postmultiplying this by m.
`RealMatrix` `multiply(RealMatrix m)` Returns the result of postmultiplying this by m.
`void` `multiplyEntry(int row, int column, double factor)` Change an entry in the specified row and column.
`void` `setEntry(int row, int column, double value)` Set the entry in the specified row and column.
`OpenMapRealMatrix` `subtract(OpenMapRealMatrix m)` Compute this minus `m`.
`OpenMapRealMatrix` `subtract(RealMatrix m)` Compute this minus m.

### Methods inherited from class org.apache.commons.math.linear.AbstractRealMatrix

`copySubMatrix, copySubMatrix, equals, getColumn, getColumnMatrix, getColumnVector, getData, getDeterminant, getFrobeniusNorm, getNorm, getRow, getRowMatrix, getRowVector, getSubMatrix, getSubMatrix, getTrace, hashCode, inverse, isSingular, isSquare, luDecompose, operate, operate, preMultiply, preMultiply, preMultiply, scalarAdd, scalarMultiply, setColumn, setColumnMatrix, setColumnVector, setRow, setRowMatrix, setRowVector, setSubMatrix, solve, solve, toString, transpose, walkInColumnOrder, walkInColumnOrder, walkInColumnOrder, walkInColumnOrder, walkInOptimizedOrder, walkInOptimizedOrder, walkInOptimizedOrder, walkInOptimizedOrder, walkInRowOrder, walkInRowOrder, walkInRowOrder, walkInRowOrder`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface org.apache.commons.math.linear.RealMatrix

`copySubMatrix, copySubMatrix, getColumn, getColumnMatrix, getColumnVector, getData, getDeterminant, getFrobeniusNorm, getNorm, getRow, getRowMatrix, getRowVector, getSubMatrix, getSubMatrix, getTrace, inverse, isSingular, operate, operate, preMultiply, preMultiply, preMultiply, scalarAdd, scalarMultiply, setColumn, setColumnMatrix, setColumnVector, setRow, setRowMatrix, setRowVector, setSubMatrix, solve, solve, transpose, walkInColumnOrder, walkInColumnOrder, walkInColumnOrder, walkInColumnOrder, walkInOptimizedOrder, walkInOptimizedOrder, walkInOptimizedOrder, walkInOptimizedOrder, walkInRowOrder, walkInRowOrder, walkInRowOrder, walkInRowOrder`

### Methods inherited from interface org.apache.commons.math.linear.AnyMatrix

`isSquare`

### Field Detail

#### serialVersionUID

    private static final long serialVersionUID

Serializable version identifier.

See Also:
  Constant Field Values

#### rows

    private final int rows

Number of rows of the matrix.

#### columns

    private final int columns

Number of columns of the matrix.

#### entries

    private final OpenIntToDoubleHashMap entries

Storage for (sparse) matrix elements.

### Constructor Detail

#### OpenMapRealMatrix

    public OpenMapRealMatrix(int rowDimension,
                     int columnDimension)

Build a sparse matrix with the supplied row and column dimensions.

Parameters:
  `rowDimension` - number of rows of the matrix
  `columnDimension` - number of columns of the matrix

#### OpenMapRealMatrix

    public OpenMapRealMatrix(OpenMapRealMatrix matrix)

Build a matrix by copying another one.

Parameters:
  `matrix` - matrix to copy

### Method Detail

#### copy

    public OpenMapRealMatrix copy()

Returns a (deep) copy of this.

Specified by:
  `copy` in interface `RealMatrix`
Specified by:
  `copy` in class `AbstractRealMatrix`
Returns:
  matrix copy

#### createMatrix

    public OpenMapRealMatrix createMatrix(int rowDimension,
                                 int columnDimension)
                                   throws java.lang.IllegalArgumentException

Create a new RealMatrix of the same type as the instance with the supplied row and column dimensions.

Specified by:
  `createMatrix` in interface `RealMatrix`
Specified by:
  `createMatrix` in class `AbstractRealMatrix`
Parameters:
  `rowDimension` - the number of rows in the new matrix
  `columnDimension` - the number of columns in the new matrix
Returns:
  a new matrix of the same type as the instance
Throws:
  `java.lang.IllegalArgumentException` - if row or column dimension is not positive

#### getColumnDimension

    public int getColumnDimension()

Returns the number of columns in the matrix.

Specified by:
  `getColumnDimension` in interface `AnyMatrix`
Specified by:
  `getColumnDimension` in class `AbstractRealMatrix`
Returns:
  columnDimension

#### add

    public OpenMapRealMatrix add(RealMatrix m)
                          throws java.lang.IllegalArgumentException

Compute the sum of this and m.

Specified by:
  `add` in interface `RealMatrix`
Overrides:
  `add` in class `AbstractRealMatrix`
Parameters:
  `m` - matrix to be added
Returns:
  this + m
Throws:
  `java.lang.IllegalArgumentException` - if m is not the same size as this

#### add

    public OpenMapRealMatrix add(OpenMapRealMatrix m)
                          throws java.lang.IllegalArgumentException

Compute the sum of this and `m`.

Parameters:
  `m` - matrix to be added
Returns:
  this + m
Throws:
  `java.lang.IllegalArgumentException` - if m is not the same size as this

#### subtract

    public OpenMapRealMatrix subtract(RealMatrix m)
                               throws java.lang.IllegalArgumentException

Compute this minus m.

Specified by:
  `subtract` in interface `RealMatrix`
Overrides:
  `subtract` in class `AbstractRealMatrix`
Parameters:
  `m` - matrix to be subtracted
Returns:
  this - m
Throws:
  `java.lang.IllegalArgumentException` - if m is not the same size as this

#### subtract

    public OpenMapRealMatrix subtract(OpenMapRealMatrix m)
                               throws java.lang.IllegalArgumentException

Compute this minus `m`.

Parameters:
  `m` - matrix to be subtracted
Returns:
  this - m
Throws:
  `java.lang.IllegalArgumentException` - if m is not the same size as this

#### multiply

    public RealMatrix multiply(RealMatrix m)
                        throws java.lang.IllegalArgumentException

Returns the result of postmultiplying this by m.

Specified by:
  `multiply` in interface `RealMatrix`
Overrides:
  `multiply` in class `AbstractRealMatrix`
Parameters:
  `m` - matrix to postmultiply by
Returns:
  this * m
Throws:
  `java.lang.IllegalArgumentException` - if columnDimension(this) != rowDimension(m)

#### multiply

    public OpenMapRealMatrix multiply(OpenMapRealMatrix m)
                               throws java.lang.IllegalArgumentException

Returns the result of postmultiplying this by m.

Parameters:
  `m` - matrix to postmultiply by
Returns:
  this * m
Throws:
  `java.lang.IllegalArgumentException` - if columnDimension(this) != rowDimension(m)

#### getEntry

    public double getEntry(int row,
                  int column)
                    throws MatrixIndexException

Returns the entry in the specified row and column.

Row and column indices start at 0 and must satisfy

- `0 <= row < rowDimension`
- `0 <= column < columnDimension`

otherwise a `MatrixIndexException` is thrown.

Specified by:
  `getEntry` in interface `RealMatrix`
Specified by:
  `getEntry` in class `AbstractRealMatrix`
Parameters:
  `row` - row location of entry to be fetched
  `column` - column location of entry to be fetched
Returns:
  matrix entry in row,column
Throws:
  `MatrixIndexException` - if the row or column index is not valid

#### getRowDimension

    public int getRowDimension()

Returns the number of rows in the matrix.

Specified by:
  `getRowDimension` in interface `AnyMatrix`
Specified by:
  `getRowDimension` in class `AbstractRealMatrix`
Returns:
  rowDimension

#### setEntry

    public void setEntry(int row,
                int column,
                double value)
                  throws MatrixIndexException

Set the entry in the specified row and column.

Row and column indices start at 0 and must satisfy

- `0 <= row < rowDimension`
- `0 <= column < columnDimension`

otherwise a `MatrixIndexException` is thrown.

Specified by:
  `setEntry` in interface `RealMatrix`
Specified by:
  `setEntry` in class `AbstractRealMatrix`
Parameters:
  `row` - row location of entry to be set
  `column` - column location of entry to be set
  `value` - matrix entry to be set in row,column
Throws:
  `MatrixIndexException` - if the row or column index is not valid

#### addToEntry

    public void addToEntry(int row,
                  int column,
                  double increment)
                    throws MatrixIndexException

Change an entry in the specified row and column.

Row and column indices start at 0 and must satisfy

- `0 <= row < rowDimension`
- `0 <= column < columnDimension`

otherwise a `MatrixIndexException` is thrown.

Specified by:
  `addToEntry` in interface `RealMatrix`
Specified by:
  `addToEntry` in class `AbstractRealMatrix`
Parameters:
  `row` - row location of entry to be set
  `column` - column location of entry to be set
  `increment` - value to add to the current matrix entry in row,column
Throws:
  `MatrixIndexException` - if the row or column index is not valid

#### multiplyEntry

    public void multiplyEntry(int row,
                     int column,
                     double factor)
                       throws MatrixIndexException

Change an entry in the specified row and column.

Row and column indices start at 0 and must satisfy

- `0 <= row < rowDimension`
- `0 <= column < columnDimension`

otherwise a `MatrixIndexException` is thrown.

Specified by:
  `multiplyEntry` in interface `RealMatrix`
Specified by:
  `multiplyEntry` in class `AbstractRealMatrix`
Parameters:
  `row` - row location of entry to be set
  `column` - column location of entry to be set
  `factor` - multiplication factor for the current matrix entry in row,column
Throws:
  `MatrixIndexException` - if the row or column index is not valid

#### computeKey

    private int computeKey(int row,
                 int column)

Compute the key to access a matrix element

Parameters:
  `row` - row index of the matrix element
  `column` - column index of the matrix element
Returns:
  key within the map to access the matrix element