sptrf#
Functions
-
void ssptrf(const char *uplo, const INT n, f32 *restrict AP, INT *restrict ipiv, INT *info)#
SSPTRF computes the factorization of a real symmetric matrix A stored in packed format using the Bunch-Kaufman diagonal pivoting method:
A = U*D*U**T or A = L*D*L**T
where U (or L) is a product of permutation and unit upper (lower) triangular matrices, and D is symmetric and block diagonal with 1-by-1 and 2-by-2 diagonal blocks.
Parameters
inuploSpecifies whether the upper or lower triangular part of the symmetric matrix A is stored:
= ‘U’: Upper triangle of A is stored
= ‘L’: Lower triangle of A is stored
innThe order of the matrix A. n >= 0.
inoutAPOn entry, the upper or lower triangle of the symmetric matrix A, packed columnwise in a linear array of dimension n*(n+1)/2. On exit, the block diagonal matrix D and the multipliers used to obtain the factor U or L, stored as a packed triangular matrix.
outipivDetails of the interchanges and the block structure of D. Array of dimension n, 0-based indexing.
If ipiv[k] >= 0, then rows and columns k and ipiv[k] were interchanged and D(k,k) is a 1-by-1 diagonal block.
If uplo = ‘U’ and ipiv[k] = ipiv[k-1] < 0, then rows and columns k-1 and -ipiv[k]-1 were interchanged and D(k-1:k,k-1:k) is a 2-by-2 diagonal block.
If uplo = ‘L’ and ipiv[k] = ipiv[k+1] < 0, then rows and columns k+1 and -ipiv[k]-1 were interchanged and D(k:k+1,k:k+1) is a 2-by-2 diagonal block.
outinfoExit status:
= 0: successful exit
< 0: if info = -i, the i-th argument had an illegal value
> 0: if info = i, D(i,i) is exactly zero. The factorization has been completed, but the block diagonal matrix D is exactly singular, and division by zero will occur if it is used to solve a system of equations.
void ssptrf(
const char* uplo,
const INT n,
f32* restrict AP,
INT* restrict ipiv,
INT* info
);
Functions
-
void dsptrf(const char *uplo, const INT n, f64 *restrict AP, INT *restrict ipiv, INT *info)#
DSPTRF computes the factorization of a real symmetric matrix A stored in packed format using the Bunch-Kaufman diagonal pivoting method:
A = U*D*U**T or A = L*D*L**T
where U (or L) is a product of permutation and unit upper (lower) triangular matrices, and D is symmetric and block diagonal with 1-by-1 and 2-by-2 diagonal blocks.
Parameters
inuploSpecifies whether the upper or lower triangular part of the symmetric matrix A is stored:
= ‘U’: Upper triangle of A is stored
= ‘L’: Lower triangle of A is stored
innThe order of the matrix A. n >= 0.
inoutAPOn entry, the upper or lower triangle of the symmetric matrix A, packed columnwise in a linear array of dimension n*(n+1)/2. On exit, the block diagonal matrix D and the multipliers used to obtain the factor U or L, stored as a packed triangular matrix.
outipivDetails of the interchanges and the block structure of D. Array of dimension n, 0-based indexing.
If ipiv[k] >= 0, then rows and columns k and ipiv[k] were interchanged and D(k,k) is a 1-by-1 diagonal block.
If uplo = ‘U’ and ipiv[k] = ipiv[k-1] < 0, then rows and columns k-1 and -ipiv[k]-1 were interchanged and D(k-1:k,k-1:k) is a 2-by-2 diagonal block.
If uplo = ‘L’ and ipiv[k] = ipiv[k+1] < 0, then rows and columns k+1 and -ipiv[k]-1 were interchanged and D(k:k+1,k:k+1) is a 2-by-2 diagonal block.
outinfoExit status:
= 0: successful exit
< 0: if info = -i, the i-th argument had an illegal value
> 0: if info = i, D(i,i) is exactly zero. The factorization has been completed, but the block diagonal matrix D is exactly singular, and division by zero will occur if it is used to solve a system of equations.
void dsptrf(
const char* uplo,
const INT n,
f64* restrict AP,
INT* restrict ipiv,
INT* info
);
Functions
-
void csptrf(const char *uplo, const INT n, c64 *restrict AP, INT *restrict ipiv, INT *info)#
CSPTRF computes the factorization of a complex symmetric matrix A stored in packed format using the Bunch-Kaufman diagonal pivoting method:
A = U*D*U**T or A = L*D*L**T
where U (or L) is a product of permutation and unit upper (lower) triangular matrices, and D is symmetric and block diagonal with 1-by-1 and 2-by-2 diagonal blocks.
Parameters
inuploSpecifies whether the upper or lower triangular part of the symmetric matrix A is stored:
= ‘U’: Upper triangle of A is stored
= ‘L’: Lower triangle of A is stored
innThe order of the matrix A. n >= 0.
inoutAPOn entry, the upper or lower triangle of the symmetric matrix A, packed columnwise in a linear array of dimension n*(n+1)/2. On exit, the block diagonal matrix D and the multipliers used to obtain the factor U or L, stored as a packed triangular matrix.
outipivDetails of the interchanges and the block structure of D. Array of dimension n, 0-based indexing.
If ipiv[k] >= 0, then rows and columns k and ipiv[k] were interchanged and D(k,k) is a 1-by-1 diagonal block.
If uplo = ‘U’ and ipiv[k] = ipiv[k-1] < 0, then rows and columns k-1 and -ipiv[k]-1 were interchanged and D(k-1:k,k-1:k) is a 2-by-2 diagonal block.
If uplo = ‘L’ and ipiv[k] = ipiv[k+1] < 0, then rows and columns k+1 and -ipiv[k]-1 were interchanged and D(k:k+1,k:k+1) is a 2-by-2 diagonal block.
outinfoExit status:
= 0: successful exit
< 0: if info = -i, the i-th argument had an illegal value
> 0: if info = i, D(i,i) is exactly zero. The factorization has been completed, but the block diagonal matrix D is exactly singular, and division by zero will occur if it is used to solve a system of equations.
void csptrf(
const char* uplo,
const INT n,
c64* restrict AP,
INT* restrict ipiv,
INT* info
);
Functions
-
void zsptrf(const char *uplo, const INT n, c128 *restrict AP, INT *restrict ipiv, INT *info)#
ZSPTRF computes the factorization of a complex symmetric matrix A stored in packed format using the Bunch-Kaufman diagonal pivoting method:
A = U*D*U**T or A = L*D*L**T
where U (or L) is a product of permutation and unit upper (lower) triangular matrices, and D is symmetric and block diagonal with 1-by-1 and 2-by-2 diagonal blocks.
Parameters
inuploSpecifies whether the upper or lower triangular part of the symmetric matrix A is stored:
= ‘U’: Upper triangle of A is stored
= ‘L’: Lower triangle of A is stored
innThe order of the matrix A. n >= 0.
inoutAPOn entry, the upper or lower triangle of the symmetric matrix A, packed columnwise in a linear array of dimension n*(n+1)/2. On exit, the block diagonal matrix D and the multipliers used to obtain the factor U or L, stored as a packed triangular matrix.
outipivDetails of the interchanges and the block structure of D. Array of dimension n, 0-based indexing.
If ipiv[k] >= 0, then rows and columns k and ipiv[k] were interchanged and D(k,k) is a 1-by-1 diagonal block.
If uplo = ‘U’ and ipiv[k] = ipiv[k-1] < 0, then rows and columns k-1 and -ipiv[k]-1 were interchanged and D(k-1:k,k-1:k) is a 2-by-2 diagonal block.
If uplo = ‘L’ and ipiv[k] = ipiv[k+1] < 0, then rows and columns k+1 and -ipiv[k]-1 were interchanged and D(k:k+1,k:k+1) is a 2-by-2 diagonal block.
outinfoExit status:
= 0: successful exit
< 0: if info = -i, the i-th argument had an illegal value
> 0: if info = i, D(i,i) is exactly zero. The factorization has been completed, but the block diagonal matrix D is exactly singular, and division by zero will occur if it is used to solve a system of equations.
void zsptrf(
const char* uplo,
const INT n,
c128* restrict AP,
INT* restrict ipiv,
INT* info
);