Documentation for module cp_fm_cholesky

various cholesky decomposition related routines

source: cp_fm_cholesky.F
Loading...

public Subroutines/Functions:

used to replace a symmetric positive def. matrix M with its cholesky decomposition U: M = U^T * U, with U upper triangular
used to replace the cholesky decomposition by the inverse
reduce a matrix pencil A,B to normal form B has to be cholesky decomposed with cp_fm_cholesky_decompose before calling this routine A,B -> inv(U^T)*A*inv(U),1 (AX=BX -> inv(U^T)*A*inv(U)*U*X=U*X hence evecs U*X)
...

SUBROUTINEcp_fm_cholesky_decompose(matrix, n, info_out)

used to replace a symmetric positive def. matrix M with its cholesky decomposition U: M = U^T * U, with U upper triangular

Arguments:
TYPE(cp_fm_type),
POINTER
:: matrix the matrix to replace with its cholesky decomposition
INTEGER,
INTENT(in),
OPTIONAL
:: n the number of row (and columns) of the matrix & (defaults to the min(size(matrix)))
INTEGER,
INTENT(out),
OPTIONAL
:: info_out ...

SUBROUTINEcp_fm_cholesky_invert(matrix, n, info_out)

used to replace the cholesky decomposition by the inverse

Arguments:
TYPE(cp_fm_type),
POINTER
:: matrix the matrix to invert (must be an upper triangular matrix)
INTEGER,
INTENT(in),
OPTIONAL
:: n size of the matrix to invert (defaults to the min(size(matrix)))
INTEGER,
INTENT(out),
OPTIONAL
:: info_out ...

SUBROUTINEcp_fm_cholesky_reduce(matrix, matrixb, itype)

reduce a matrix pencil A,B to normal form B has to be cholesky decomposed with cp_fm_cholesky_decompose before calling this routine A,B -> inv(U^T)*A*inv(U),1 (AX=BX -> inv(U^T)*A*inv(U)*U*X=U*X hence evecs U*X)

Arguments:
TYPE(cp_fm_type),
POINTER
:: matrix the symmetric matrix A
TYPE(cp_fm_type),
POINTER
:: matrixb the cholesky decomposition of matrix B
INTEGER,
OPTIONAL
:: itype ...

SUBROUTINEcp_fm_cholesky_restore(matrix, neig, matrixb, matrixout, op, pos, transa)

...

Arguments:
TYPE(cp_fm_type),
POINTER
:: matrix ...
INTEGER,
INTENT(in)
:: neig ...
TYPE(cp_fm_type),
POINTER
:: matrixb ...
TYPE(cp_fm_type),
POINTER
:: matrixout ...
CHARACTER(*),
INTENT(in)
:: op ...
CHARACTER(*),
INTENT(in),
OPTIONAL
:: pos ...
CHARACTER(*),
INTENT(in),
OPTIONAL
:: transa ...