Class CholeskyDecompositionBlock_DDRM

java.lang.Object
org.ejml.dense.row.decomposition.chol.CholeskyDecompositionCommon_DDRM
org.ejml.dense.row.decomposition.chol.CholeskyDecompositionBlock_DDRM
All Implemented Interfaces:
CholeskyDecomposition<DMatrixRMaj>, CholeskyDecomposition_F64<DMatrixRMaj>, DecompositionInterface<DMatrixRMaj>
Direct Known Subclasses:
CholeskyDecompositionBlock_MT_DDRM

public class CholeskyDecompositionBlock_DDRM extends CholeskyDecompositionCommon_DDRM
This is an implementation of Cholesky that processes internal submatrices as blocks. This is done to reduce the number of cache issues.
  • Constructor Details

    • CholeskyDecompositionBlock_DDRM

      public CholeskyDecompositionBlock_DDRM(int blockWidth)
      Creates a CholeksyDecomposition capable of decomposing a matrix that is n by n, where n is the width.
      Parameters:
      blockWidth - The width of a block.
  • Method Details

    • setExpectedMaxSize

      public void setExpectedMaxSize(int numRows, int numCols)
      Declares additional internal data structures.
      Overrides:
      setExpectedMaxSize in class CholeskyDecompositionCommon_DDRM
    • decomposeLower

      protected boolean decomposeLower()

      Performs Choleksy decomposition on the provided matrix.

      If the matrix is not positive definite then this function will return false since it can't complete its computations. Not all errors will be found.

      Specified by:
      decomposeLower in class CholeskyDecompositionCommon_DDRM
      Returns:
      True if it was able to finish the decomposition.
    • decomposeUpper

      protected boolean decomposeUpper()
      Description copied from class: CholeskyDecompositionCommon_DDRM
      Performs an upper triangular decomposition.
      Specified by:
      decomposeUpper in class CholeskyDecompositionCommon_DDRM
      Returns:
      true if the matrix was decomposed.
    • solveL_special

      public void solveL_special(double[] L, DMatrixRMaj b_src, int indexSrc, int indexDst, DMatrixRMaj B)
      This is a variation on the TriangularSolver_DDRM.solveL(double[], double[], int) function. It grabs the input from the top right row rectangle of the source matrix then writes the results to the lower bottom column rectangle. The rectangle matrices just matrices are submatrices of the matrix that is being decomposed. The results are also written to B.
      Parameters:
      L - A lower triangular matrix.
      b_src - matrix with the vectors that are to be solved for
      indexSrc - First index of the submatrix where the inputs are coming from.
      indexDst - First index of the submatrix where the results are going to.
    • symmRankTranA_sub

      public void symmRankTranA_sub(DMatrixRMaj a, DMatrixRMaj c, int startIndexC)

      Performs this operation:

      c = c - aTa
      where c is a submatrix.

      Only the upper triangle is updated.
      Parameters:
      a - A matrix.
      c - A matrix.
      startIndexC - start of the submatrix in c.