Class SparseFieldMatrix<T extends FieldElement<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
    • Field Detail

      • rows

        private final int rows
        Row dimension.
      • columns

        private final int columns
        Column dimension.
    • Constructor Detail

      • 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 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 Detail

      • 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).
      • createMatrix

        public FieldMatrix<T> createMatrix​(int rowDimension,
                                           int columnDimension)
        Create a new FieldMatrix 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
      • 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
      • 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
      • 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:
        the key within the map to access the matrix element.