(S|D|C|Z)SYTRF

Single, double, single complex, and double complex SYTRF.

Description

Computes the factorization of a symmetric matrix using one of the following factorizations:

\fvar{A} = \fvar{U} \mult \fvar{D} \mult \trans{\fvar{U}}

\fvar{A} = \fvar{L} \mult \fvar{D} \mult \trans{\fvar{L}}

Uses the Bunch-Kaufman diagonal pivoting method. U is a product of permutation and unit upper triangular matrices. L is a product of permutation and unit lower triangular matrices. D is symmetric with block diagonal structure, with blocks of size 1x1 or 2x2.

LAPACK Interface

void ssytrf(const char *UPLO, const qml_long *N, float *A, const qml_long *LDA,
    qml_long *IPIV, float *WORK, const qml_long *LWORK, qml_long *INFO);

void dsytrf(const char *UPLO, const qml_long *N, double *A, const qml_long *LDA,
    qml_long *IPIV, double *WORK, const qml_long *LWORK, qml_long *INFO);

void csytrf(const char *UPLO, const qml_long *N, qml_single_complex *A,
    const qml_long *LDA, qml_long *IPIV, qml_single_complex *WORK,
    const qml_long *LWORK, qml_long *INFO);

void zsytrf(const char *UPLO, const qml_long *N, qml_double_complex *A,
    const qml_long *LDA, qml_long *IPIV, qml_double_complex *WORK,
    const qml_long *LWORK, qml_long *INFO);

Arguments

UPLO Set to ‘U’ for upper triangular factorization, ‘L’ for lower
N Number of rows and columns of A
A Matrix of size N x N, overwritten with D on exit
LDA Leading dimension of A
IPIV Array of pivots of size N, negative indicates 2x2 block pivots
WORK Work space
LWORK Size of WORK, -1 to query
INFO 0 on success, <0 for bad arguments, >0 if singular