Package org.apache.commons.math3.linear

# Class OpenMapRealMatrix

java.lang.Object
org.apache.commons.math3.linear.RealLinearOperator
org.apache.commons.math3.linear.AbstractRealMatrix
org.apache.commons.math3.linear.OpenMapRealMatrix

All Implemented Interfaces:
  `Serializable`, `AnyMatrix`, `RealMatrix`, `SparseRealMatrix`

public class OpenMapRealMatrix extends AbstractRealMatrix implements SparseRealMatrix, Serializable
Sparse matrix implementation based on an open addressed map.

Caveat: This implementation assumes that, for any `x`, the equality `x * 0d == 0d` holds. But it is is not true for `NaN`. Moreover, zero entries will lose their sign. Some operations (that involve `NaN` and/or infinities) may thus give incorrect results.

Since:
  2.0
See Also:
  - Serialized Form

## Constructor Summary

Constructors
Constructor
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

Modifier and Type
Method
Description
`OpenMapRealMatrix`
`add(OpenMapRealMatrix m)`
Compute the sum of this matrix and `m`.
`void`
`addToEntry(int row, int column, double increment)`
Adds (in place) the specified value to the specified entry of `this` matrix.
`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 of this matrix.
`double`
`getEntry(int row, int column)`
Get the entry in the specified row and column.
`int`
`getRowDimension()`
Returns the number of rows of this matrix.
`OpenMapRealMatrix`
`multiply(OpenMapRealMatrix m)`
Postmultiply this matrix by `m`.
`RealMatrix`
`multiply(RealMatrix m)`
Returns the result of postmultiplying `this` by `m`.
`void`
`multiplyEntry(int row, int column, double factor)`
Multiplies (in place) the specified entry of `this` matrix by the specified value.
`void`
`setEntry(int row, int column, double value)`
Set the entry in the specified row and column.
`OpenMapRealMatrix`
`subtract(OpenMapRealMatrix m)`
Subtract `m` from this matrix.
`OpenMapRealMatrix`
`subtract(RealMatrix m)`
Returns `this` minus `m`.

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

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

### Methods inherited from class org.apache.commons.math3.linear.RealLinearOperator

`isTransposable, operateTranspose`

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

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

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

`isSquare`

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

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

## Constructor Details

### OpenMapRealMatrix

public OpenMapRealMatrix(int rowDimension, int columnDimension) throws NotStrictlyPositiveException, NumberIsTooLargeException
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.
Throws:
  `NotStrictlyPositiveException` - if row or column dimension is not positive.
  `NumberIsTooLargeException` - if the total number of entries of the matrix is larger than `Integer.MAX_VALUE`.

### OpenMapRealMatrix

public OpenMapRealMatrix(OpenMapRealMatrix matrix)
Build a matrix by copying another one.

Parameters:
  `matrix` - matrix to copy.

## Method Details

### 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 NotStrictlyPositiveException, NumberIsTooLargeException
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:
  `NumberIsTooLargeException` - if the total number of entries of the matrix is larger than `Integer.MAX_VALUE`.
  `NotStrictlyPositiveException` - if row or column dimension is not positive.

### getColumnDimension

public int getColumnDimension()
Returns the number of columns of this matrix.

Specified by:
  `getColumnDimension` in interface `AnyMatrix`
Specified by:
  `getColumnDimension` in class `AbstractRealMatrix`
Returns:
  the number of columns.

### add

public OpenMapRealMatrix add(OpenMapRealMatrix m) throws MatrixDimensionMismatchException
Compute the sum of this matrix and `m`.

Parameters:
  `m` - Matrix to be added.
Returns:
  `this` + `m`.
Throws:
  `MatrixDimensionMismatchException` - if `m` is not the same size as `this`.

### subtract

public OpenMapRealMatrix subtract(RealMatrix m) throws MatrixDimensionMismatchException
Returns `this` minus `m`.

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

### subtract

public OpenMapRealMatrix subtract(OpenMapRealMatrix m) throws MatrixDimensionMismatchException
Subtract `m` from this matrix.

Parameters:
  `m` - Matrix to be subtracted.
Returns:
  `this` - `m`.
Throws:
  `MatrixDimensionMismatchException` - if `m` is not the same size as `this`.

### multiply

public RealMatrix multiply(RealMatrix m) throws DimensionMismatchException, NumberIsTooLargeException
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:
  `NumberIsTooLargeException` - if `m` is an `OpenMapRealMatrix`, and the total number of entries of the product is larger than `Integer.MAX_VALUE`.
  `DimensionMismatchException` - if `columnDimension(this) != rowDimension(m)`

### multiply

public OpenMapRealMatrix multiply(OpenMapRealMatrix m) throws DimensionMismatchException, NumberIsTooLargeException
Postmultiply this matrix by `m`.

Parameters:
  `m` - Matrix to postmultiply by.
Returns:
  `this` * `m`.
Throws:
  `DimensionMismatchException` - if the number of rows of `m` differ from the number of columns of `this` matrix.
  `NumberIsTooLargeException` - if the total number of entries of the product is larger than `Integer.MAX_VALUE`.

### getEntry

public double getEntry(int row, int column) throws OutOfRangeException
Get the entry in the specified row and column. Row and column indices start at 0.

Specified by:
  `getEntry` in interface `RealMatrix`
Specified by:
  `getEntry` in class `AbstractRealMatrix`
Parameters:
  `row` - Row index of entry to be fetched.
  `column` - Column index of entry to be fetched.
Returns:
  the matrix entry at `(row, column)`.
Throws:
  `OutOfRangeException` - if the row or column index is not valid.

### getRowDimension

public int getRowDimension()
Returns the number of rows of this matrix.

Specified by:
  `getRowDimension` in interface `AnyMatrix`
Specified by:
  `getRowDimension` in class `AbstractRealMatrix`
Returns:
  the number of rows.

### setEntry

public void setEntry(int row, int column, double value) throws OutOfRangeException
Set the entry in the specified row and column. Row and column indices start at 0.

Specified by:
  `setEntry` in interface `RealMatrix`
Specified by:
  `setEntry` in class `AbstractRealMatrix`
Parameters:
  `row` - Row index of entry to be set.
  `column` - Column index of entry to be set.
  `value` - the new value of the entry.
Throws:
  `OutOfRangeException` - if the row or column index is not valid

### addToEntry

public void addToEntry(int row, int column, double increment) throws OutOfRangeException
Adds (in place) the specified value to the specified entry of `this` matrix. Row and column indices start at 0.

Specified by:
  `addToEntry` in interface `RealMatrix`
Overrides:
  `addToEntry` in class `AbstractRealMatrix`
Parameters:
  `row` - Row index of the entry to be modified.
  `column` - Column index of the entry to be modified.
  `increment` - value to add to the matrix entry.
Throws:
  `OutOfRangeException` - if the row or column index is not valid.

### multiplyEntry

public void multiplyEntry(int row, int column, double factor) throws OutOfRangeException
Multiplies (in place) the specified entry of `this` matrix by the specified value. Row and column indices start at 0.

Specified by:
  `multiplyEntry` in interface `RealMatrix`
Overrides:
  `multiplyEntry` in class `AbstractRealMatrix`
Parameters:
  `row` - Row index of the entry to be modified.
  `column` - Column index of the entry to be modified.
  `factor` - Multiplication factor for the matrix entry.
Throws:
  `OutOfRangeException` - if the row or column index is not valid.