spsv#
Functions
-
void sspsv(const char *uplo, const INT n, const INT nrhs, f32 *restrict AP, INT *restrict ipiv, f32 *restrict B, const INT ldb, INT *info)#
SSPSV computes the solution to a real system of linear equations.
where A is an N-by-N symmetric matrix stored in packed format and X and B are N-by-NRHS matrices.A * X = B,
The diagonal pivoting method is used to factor A as
where U (or L) is a product of permutation and unit upper (lower) triangular matrices, D is symmetric and block diagonal with 1-by-1 and 2-by-2 diagonal blocks. The factored form of A is then used to solve the system of equations A * X = B.A = U * D * U**T, if uplo = 'U', or A = L * D * L**T, if uplo = 'L',
- Further Details:
The packed storage scheme is illustrated by the following example when
n=4,uplo='U':Two-dimensional storage of the symmetric matrix A:
a00 a01 a02 a03 a11 a12 a13 a22 a23 (aij = aji) a33Packed storage of the upper triangle of A:
AP = [ a00, a01, a11, a02, a12, a22, a03, a13, a23, a33 ]
Parameters
inuplo'U': Upper triangle of A is stored'L': Lower triangle of A is stored
innThe number of linear equations, i.e., the order of the matrix A.
n>=0.innrhsThe number of right hand sides.
nrhs>=0.inoutAPArray of dimension
n*(n+1)/2. On entry, the upper or lower triangle of the symmetric matrix A, packed columnwise in a linear array. The j-th column of A is stored in the array AP as follows: ifuplo='U',AP[i + j*(j+1)/2] = A(i,j)for0<=i<=j; ifuplo='L',AP[i + j*(2*n-j-1)/2] = A(i,j)forj<=i<=n-1. See below for further details. On exit, the block diagonal matrix D and the multipliers used to obtain the factor U or L from the factorization A = U*D*U**T or A = L*D*L**T as computed byssptrf, stored as a packed triangular matrix in the same storage format as A.inoutBArray of dimension
(ldb,nrhs). On entry, the n-by-nrhs right hand side matrix B. On exit, ifinfo=0, the n-by-nrhs solution matrix X.inldbThe leading dimension of the array B.
ldb>=max(1,n).outinfoinfo=0: successful exitinfo<0: ifinfo=-i, the i-th argument had an illegal valueinfo>0: ifinfo=i,D(i,i)is exactly zero. The factorization has been completed, but the block diagonal matrix D is exactly singular, so the solution could not be computed.
void sspsv(
const char* uplo,
const INT n,
const INT nrhs,
f32* restrict AP,
INT* restrict ipiv,
f32* restrict B,
const INT ldb,
INT* info
);
Functions
-
void dspsv(const char *uplo, const INT n, const INT nrhs, f64 *restrict AP, INT *restrict ipiv, f64 *restrict B, const INT ldb, INT *info)#
DSPSV computes the solution to a real system of linear equations.
where A is an N-by-N symmetric matrix stored in packed format and X and B are N-by-NRHS matrices.A * X = B,
The diagonal pivoting method is used to factor A as
where U (or L) is a product of permutation and unit upper (lower) triangular matrices, D is symmetric and block diagonal with 1-by-1 and 2-by-2 diagonal blocks. The factored form of A is then used to solve the system of equations A * X = B.A = U * D * U**T, if uplo = 'U', or A = L * D * L**T, if uplo = 'L',
- Further Details:
The packed storage scheme is illustrated by the following example when
n=4,uplo='U':Two-dimensional storage of the symmetric matrix A:
a00 a01 a02 a03 a11 a12 a13 a22 a23 (aij = aji) a33Packed storage of the upper triangle of A:
AP = [ a00, a01, a11, a02, a12, a22, a03, a13, a23, a33 ]
Parameters
inuplo'U': Upper triangle of A is stored'L': Lower triangle of A is stored
innThe number of linear equations, i.e., the order of the matrix A.
n>=0.innrhsThe number of right hand sides.
nrhs>=0.inoutAPArray of dimension
n*(n+1)/2. On entry, the upper or lower triangle of the symmetric matrix A, packed columnwise in a linear array. The j-th column of A is stored in the array AP as follows: ifuplo='U',AP[i + j*(j+1)/2] = A(i,j)for0<=i<=j; ifuplo='L',AP[i + j*(2*n-j-1)/2] = A(i,j)forj<=i<=n-1. See below for further details. On exit, the block diagonal matrix D and the multipliers used to obtain the factor U or L from the factorization A = U*D*U**T or A = L*D*L**T as computed bydsptrf, stored as a packed triangular matrix in the same storage format as A.inoutBArray of dimension
(ldb,nrhs). On entry, the n-by-nrhs right hand side matrix B. On exit, ifinfo=0, the n-by-nrhs solution matrix X.inldbThe leading dimension of the array B.
ldb>=max(1,n).outinfoinfo=0: successful exitinfo<0: ifinfo=-i, the i-th argument had an illegal valueinfo>0: ifinfo=i,D(i,i)is exactly zero. The factorization has been completed, but the block diagonal matrix D is exactly singular, so the solution could not be computed.
void dspsv(
const char* uplo,
const INT n,
const INT nrhs,
f64* restrict AP,
INT* restrict ipiv,
f64* restrict B,
const INT ldb,
INT* info
);
Functions
-
void cspsv(const char *uplo, const INT n, const INT nrhs, c64 *restrict AP, INT *restrict ipiv, c64 *restrict B, const INT ldb, INT *info)#
CSPSV computes the solution to a complex system of linear equations.
where A is an N-by-N symmetric matrix stored in packed format and X and B are N-by-NRHS matrices.A * X = B,
The diagonal pivoting method is used to factor A as
where U (or L) is a product of permutation and unit upper (lower) triangular matrices, D is symmetric and block diagonal with 1-by-1 and 2-by-2 diagonal blocks. The factored form of A is then used to solve the system of equations A * X = B.A = U * D * U**T, if uplo = 'U', or A = L * D * L**T, if uplo = 'L',
- Further Details:
The packed storage scheme is illustrated by the following example when
n=4,uplo='U':Two-dimensional storage of the symmetric matrix A:
a00 a01 a02 a03 a11 a12 a13 a22 a23 (aij = aji) a33Packed storage of the upper triangle of A:
AP = [ a00, a01, a11, a02, a12, a22, a03, a13, a23, a33 ]
Parameters
inuplo'U': Upper triangle of A is stored'L': Lower triangle of A is stored
innThe number of linear equations, i.e., the order of the matrix A.
n>=0.innrhsThe number of right hand sides.
nrhs>=0.inoutAPComplex array of dimension
n*(n+1)/2. On entry, the upper or lower triangle of the symmetric matrix A, packed columnwise in a linear array. The j-th column of A is stored in the array AP as follows: ifuplo='U',AP[i + j*(j+1)/2] = A(i,j)for0<=i<=j; ifuplo='L',AP[i + j*(2*n-j-1)/2] = A(i,j)forj<=i<=n-1. See below for further details. On exit, the block diagonal matrix D and the multipliers used to obtain the factor U or L from the factorization A = U*D*U**T or A = L*D*L**T as computed bycsptrf, stored as a packed triangular matrix in the same storage format as A.inoutBComplex array of dimension
(ldb,nrhs). On entry, the n-by-nrhs right hand side matrix B. On exit, ifinfo=0, the n-by-nrhs solution matrix X.inldbThe leading dimension of the array B.
ldb>=max(1,n).outinfoinfo=0: successful exitinfo<0: ifinfo=-i, the i-th argument had an illegal valueinfo>0: ifinfo=i,D(i,i)is exactly zero. The factorization has been completed, but the block diagonal matrix D is exactly singular, so the solution could not be computed.
void cspsv(
const char* uplo,
const INT n,
const INT nrhs,
c64* restrict AP,
INT* restrict ipiv,
c64* restrict B,
const INT ldb,
INT* info
);
Functions
-
void zspsv(const char *uplo, const INT n, const INT nrhs, c128 *restrict AP, INT *restrict ipiv, c128 *restrict B, const INT ldb, INT *info)#
ZSPSV computes the solution to a complex system of linear equations.
where A is an N-by-N symmetric matrix stored in packed format and X and B are N-by-NRHS matrices.A * X = B,
The diagonal pivoting method is used to factor A as
where U (or L) is a product of permutation and unit upper (lower) triangular matrices, D is symmetric and block diagonal with 1-by-1 and 2-by-2 diagonal blocks. The factored form of A is then used to solve the system of equations A * X = B.A = U * D * U**T, if uplo = 'U', or A = L * D * L**T, if uplo = 'L',
- Further Details:
The packed storage scheme is illustrated by the following example when
n=4,uplo='U':Two-dimensional storage of the symmetric matrix A:
a00 a01 a02 a03 a11 a12 a13 a22 a23 (aij = aji) a33Packed storage of the upper triangle of A:
AP = [ a00, a01, a11, a02, a12, a22, a03, a13, a23, a33 ]
Parameters
inuplo'U': Upper triangle of A is stored'L': Lower triangle of A is stored
innThe number of linear equations, i.e., the order of the matrix A.
n>=0.innrhsThe number of right hand sides.
nrhs>=0.inoutAPComplex array of dimension
n*(n+1)/2. On entry, the upper or lower triangle of the symmetric matrix A, packed columnwise in a linear array. The j-th column of A is stored in the array AP as follows: ifuplo='U',AP[i + j*(j+1)/2] = A(i,j)for0<=i<=j; ifuplo='L',AP[i + j*(2*n-j-1)/2] = A(i,j)forj<=i<=n-1. See below for further details. On exit, the block diagonal matrix D and the multipliers used to obtain the factor U or L from the factorization A = U*D*U**T or A = L*D*L**T as computed byzsptrf, stored as a packed triangular matrix in the same storage format as A.inoutBComplex array of dimension
(ldb,nrhs). On entry, the n-by-nrhs right hand side matrix B. On exit, ifinfo=0, the n-by-nrhs solution matrix X.inldbThe leading dimension of the array B.
ldb>=max(1,n).outinfoinfo=0: successful exitinfo<0: ifinfo=-i, the i-th argument had an illegal valueinfo>0: ifinfo=i,D(i,i)is exactly zero. The factorization has been completed, but the block diagonal matrix D is exactly singular, so the solution could not be computed.
void zspsv(
const char* uplo,
const INT n,
const INT nrhs,
c128* restrict AP,
INT* restrict ipiv,
c128* restrict B,
const INT ldb,
INT* info
);