Package org.apache.commons.math3.linear

# Class SparseFieldMatrix<T extends FieldElement<T>>

java.lang.Object
org.apache.commons.math3.linear.AbstractFieldMatrix<T>
org.apache.commons.math3.linear.SparseFieldMatrix<T>

Type Parameters:
  `T` - the type of the field elements

All Implemented Interfaces:
  `AnyMatrix`, `FieldMatrix<T>`

public class SparseFieldMatrix<T extends FieldElement<T>> extends AbstractFieldMatrix<T>
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

## Constructor Summary

Constructors
Constructor
Description
`SparseFieldMatrix(Field<T> field)`
Create a matrix with no data.
`SparseFieldMatrix(Field<T> field, int rowDimension, int columnDimension)`
Create a new SparseFieldMatrix<T> with the supplied row and column dimensions.
`SparseFieldMatrix(FieldMatrix<T> other)`
Generic copy constructor.
`SparseFieldMatrix(SparseFieldMatrix<T> other)`
Copy constructor.

## Method Summary

Modifier and Type
Method
Description
`void`
`addToEntry(int row, int column, T increment)`
Change an entry in the specified row and column.
`FieldMatrix<T>`
`copy()`
Make a (deep) copy of this.
`FieldMatrix<T>`
`createMatrix(int rowDimension, int columnDimension)`
Create a new FieldMatrix<T> of the same type as the instance with the supplied row and column dimensions.
`int`
`getColumnDimension()`
Returns the number of columns in the matrix.
`T`
`getEntry(int row, int column)`
Returns the entry in the specified row and column.
`int`
`getRowDimension()`
Returns the number of rows in the matrix.
`void`
`multiplyEntry(int row, int column, T factor)`
Change an entry in the specified row and column.
`void`
`setEntry(int row, int column, T value)`
Set the entry in the specified row and column.

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

`add, buildArray, buildArray, checkAdditionCompatible, checkColumnIndex, checkMultiplicationCompatible, checkRowIndex, checkSubMatrixIndex, checkSubMatrixIndex, checkSubtractionCompatible, copySubMatrix, copySubMatrix, equals, extractField, extractField, getColumn, getColumnMatrix, getColumnVector, getData, getField, getRow, getRowMatrix, getRowVector, getSubMatrix, getSubMatrix, getTrace, hashCode, isSquare, multiply, operate, operate, power, preMultiply, preMultiply, preMultiply, scalarAdd, scalarMultiply, setColumn, setColumnMatrix, setColumnVector, setRow, setRowMatrix, setRowVector, setSubMatrix, subtract, 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`

## Constructor Details

### SparseFieldMatrix

public SparseFieldMatrix(Field<T> field)
Create a matrix with no data.

Parameters:
  `field` - Field to which the elements belong.

### SparseFieldMatrix

public SparseFieldMatrix(Field<T> field, int rowDimension, int columnDimension)
Create a new SparseFieldMatrix<T> with the supplied row and column dimensions.

Parameters:
  `field` - Field to which the elements belong.
  `rowDimension` - Number of rows in the new matrix.
  `columnDimension` - Number of columns in the new matrix.
Throws:
  `NotStrictlyPositiveException` - if row or column dimension is not positive.

### SparseFieldMatrix

public SparseFieldMatrix(SparseFieldMatrix<T> other)
Copy constructor.

Parameters:
  `other` - Instance to copy.

### SparseFieldMatrix

public SparseFieldMatrix(FieldMatrix<T> other)
Generic copy constructor.

Parameters:
  `other` - Instance to copy.

## Method Details

### addToEntry

public void addToEntry(int row, int column, T increment)
Change an entry in the specified row and column.

Specified by:
  `addToEntry` in interface `FieldMatrix<T extends FieldElement<T>>`
Specified by:
  `addToEntry` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
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)`.

### copy

public FieldMatrix<T> copy()
Make a (deep) copy of this.

Specified by:
  `copy` in interface `FieldMatrix<T extends FieldElement<T>>`
Specified by:
  `copy` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
Returns:
  a copy of this matrix.

### createMatrix

public FieldMatrix<T> createMatrix(int rowDimension, int columnDimension)
Create a new FieldMatrix<T> of the same type as the instance with the supplied row and column dimensions.

Specified by:
  `createMatrix` in interface `FieldMatrix<T extends FieldElement<T>>`
Specified by:
  `createMatrix` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
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

### getColumnDimension

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

Specified by:
  `getColumnDimension` in interface `AnyMatrix`
Specified by:
  `getColumnDimension` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
Returns:
  columnDimension

### getEntry

public T getEntry(int row, int column)
Returns the entry in the specified row and column.

Specified by:
  `getEntry` in interface `FieldMatrix<T extends FieldElement<T>>`
Specified by:
  `getEntry` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
Parameters:
  `row` - row location of entry to be fetched
  `column` - column location of entry to be fetched
Returns:
  matrix entry in row,column

### getRowDimension

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

Specified by:
  `getRowDimension` in interface `AnyMatrix`
Specified by:
  `getRowDimension` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
Returns:
  rowDimension

### multiplyEntry

public void multiplyEntry(int row, int column, T factor)
Change an entry in the specified row and column.

Specified by:
  `multiplyEntry` in interface `FieldMatrix<T extends FieldElement<T>>`
Specified by:
  `multiplyEntry` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
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)`

### setEntry

public void setEntry(int row, int column, T value)
Set the entry in the specified row and column.

Specified by:
  `setEntry` in interface `FieldMatrix<T extends FieldElement<T>>`
Specified by:
  `setEntry` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
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