org.ejml.alg.dense.decomposition.chol
Class CholeskyDecompositionBlock

java.lang.Object
  extended by org.ejml.alg.dense.decomposition.chol.CholeskyDecompositionCommon
      extended by org.ejml.alg.dense.decomposition.chol.CholeskyDecompositionBlock
All Implemented Interfaces:
CholeskyDecomposition<DenseMatrix64F>, DecompositionInterface<DenseMatrix64F>

public class CholeskyDecompositionBlock
extends CholeskyDecompositionCommon

This is an implementation of Cholesky that processes internal submatrices as blocks. This is done to reduce the number of cache issues.

Author:
Peter Abeles

Field Summary
 
Fields inherited from class org.ejml.alg.dense.decomposition.chol.CholeskyDecompositionCommon
lower, maxWidth, n, t, T, vv
 
Constructor Summary
CholeskyDecompositionBlock(int blockWidth)
          Creates a CholeksyDecomposition capable of decomposing a matrix that is n by n, where n is the width.
 
Method Summary
protected  boolean decomposeLower()
           Performs Choleksy decomposition on the provided matrix.
protected  boolean decomposeUpper()
          Performs an upper triangular decomposition.
 void setExpectedMaxSize(int numRows, int numCols)
          Declares additional internal data structures.
static void solveL_special(double[] L, DenseMatrix64F b_src, int indexSrc, int indexDst, DenseMatrix64F B)
          This is a variation on the TriangularSolver.solveL(double[], double[], int) function.
static void symmRankTranA_sub(DenseMatrix64F a, DenseMatrix64F c, int startIndexC)
           Performs this operation:

c = c - aTa
where c is a submatrix.
 
Methods inherited from class org.ejml.alg.dense.decomposition.chol.CholeskyDecompositionCommon
_getVV, decompose, getT, getT, inputModified, isLower
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CholeskyDecompositionBlock

public CholeskyDecompositionBlock(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 Detail

setExpectedMaxSize

public void setExpectedMaxSize(int numRows,
                               int numCols)
Declares additional internal data structures.

Overrides:
setExpectedMaxSize in class CholeskyDecompositionCommon

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
Returns:
True if it was able to finish the decomposition.

decomposeUpper

protected boolean decomposeUpper()
Description copied from class: CholeskyDecompositionCommon
Performs an upper triangular decomposition.

Specified by:
decomposeUpper in class CholeskyDecompositionCommon
Returns:
true if the matrix was decomposed.

solveL_special

public static void solveL_special(double[] L,
                                  DenseMatrix64F b_src,
                                  int indexSrc,
                                  int indexDst,
                                  DenseMatrix64F B)
This is a variation on the TriangularSolver.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.
B -

symmRankTranA_sub

public static void symmRankTranA_sub(DenseMatrix64F a,
                                     DenseMatrix64F 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.


Copyright © 2012. All Rights Reserved.