hpsvx#
Functions
-
void chpsvx(const char *fact, const char *uplo, const INT n, const INT nrhs, const c64 *restrict AP, c64 *restrict AFP, INT *restrict ipiv, const c64 *restrict B, const INT ldb, c64 *restrict X, const INT ldx, f32 *rcond, f32 *restrict ferr, f32 *restrict berr, c64 *restrict work, f32 *restrict rwork, INT *info)#
CHPSVX uses the diagonal pivoting factorization A = U*D*U**H or A = L*D*L**H to compute the solution to a complex system of linear equations A * X = B, where A is an N-by-N Hermitian matrix stored in packed format and X and B are N-by-NRHS matrices.
Error bounds on the solution and a condition estimate are also provided.
The following steps are performed:
If FACT = ‘N’, the diagonal pivoting method is used to factor A as A = U * D * U**H, if UPLO = ‘U’, or A = L * D * L**H, if UPLO = ‘L’, where U (or L) is a product of permutation and unit upper (lower) triangular matrices and D is Hermitian and block diagonal with 1-by-1 and 2-by-2 diagonal blocks.
If some D(i,i)=0, so that D is exactly singular, then the routine returns with INFO = i. Otherwise, the factored form of A is used to estimate the condition number of the matrix A. If the reciprocal of the condition number is less than machine precision, INFO = N+1 is returned as a warning, but the routine still goes on to solve for X and compute error bounds as described below.
The system of equations is solved for X using the factored form of A.
Iterative refinement is applied to improve the computed solution matrix and calculate error bounds and backward error estimates for it.
Parameters
infactSpecifies whether the factored form of A has been supplied. = ‘F’: AFP and IPIV contain the factored form of A. = ‘N’: The matrix A will be copied to AFP and factored.
inuplo= ‘U’: Upper triangle of A is stored; = ‘L’: Lower triangle of A is stored.
innThe number of linear equations. n >= 0.
innrhsThe number of right hand sides. nrhs >= 0.
inAPThe upper or lower triangle of the Hermitian matrix A, packed columnwise. Array of dimension (n*(n+1)/2).
inoutAFPIf fact = ‘F’, contains the factored form from CHPTRF. If fact = ‘N’, on exit contains the factorization. Array of dimension (n*(n+1)/2).
inoutipivIf fact = ‘F’, contains the pivot details from CHPTRF. If fact = ‘N’, on exit contains the pivot details. Array of dimension (n).
inBThe N-by-NRHS right hand side matrix B. Array of dimension (ldb, nrhs).
inldbThe leading dimension of B. ldb >= max(1,n).
outXThe N-by-NRHS solution matrix X. Array of dimension (ldx, nrhs).
inldxThe leading dimension of X. ldx >= max(1,n).
outrcondThe reciprocal condition number estimate.
outferrForward error bounds. Array of dimension (nrhs).
outberrBackward error bounds. Array of dimension (nrhs).
outworkComplex workspace array of dimension (2*n).
outrworkReal workspace array of dimension (n).
outinfo= 0: successful exit
< 0: if info = -i, the i-th argument had an illegal value
> 0: if info = i, and i is <= n: D(i,i) is exactly zero. RCOND = 0 is returned. = n+1: D is nonsingular, but RCOND is less than machine precision.
void chpsvx(
const char* fact,
const char* uplo,
const INT n,
const INT nrhs,
const c64* restrict AP,
c64* restrict AFP,
INT* restrict ipiv,
const c64* restrict B,
const INT ldb,
c64* restrict X,
const INT ldx,
f32* rcond,
f32* restrict ferr,
f32* restrict berr,
c64* restrict work,
f32* restrict rwork,
INT* info
);
Functions
-
void zhpsvx(const char *fact, const char *uplo, const INT n, const INT nrhs, const c128 *restrict AP, c128 *restrict AFP, INT *restrict ipiv, const c128 *restrict B, const INT ldb, c128 *restrict X, const INT ldx, f64 *rcond, f64 *restrict ferr, f64 *restrict berr, c128 *restrict work, f64 *restrict rwork, INT *info)#
ZHPSVX uses the diagonal pivoting factorization A = U*D*U**H or A = L*D*L**H to compute the solution to a complex system of linear equations A * X = B, where A is an N-by-N Hermitian matrix stored in packed format and X and B are N-by-NRHS matrices.
Error bounds on the solution and a condition estimate are also provided.
The following steps are performed:
If FACT = ‘N’, the diagonal pivoting method is used to factor A as A = U * D * U**H, if UPLO = ‘U’, or A = L * D * L**H, if UPLO = ‘L’, where U (or L) is a product of permutation and unit upper (lower) triangular matrices and D is Hermitian and block diagonal with 1-by-1 and 2-by-2 diagonal blocks.
If some D(i,i)=0, so that D is exactly singular, then the routine returns with INFO = i. Otherwise, the factored form of A is used to estimate the condition number of the matrix A. If the reciprocal of the condition number is less than machine precision, INFO = N+1 is returned as a warning, but the routine still goes on to solve for X and compute error bounds as described below.
The system of equations is solved for X using the factored form of A.
Iterative refinement is applied to improve the computed solution matrix and calculate error bounds and backward error estimates for it.
Parameters
infactSpecifies whether the factored form of A has been supplied. = ‘F’: AFP and IPIV contain the factored form of A. = ‘N’: The matrix A will be copied to AFP and factored.
inuplo= ‘U’: Upper triangle of A is stored; = ‘L’: Lower triangle of A is stored.
innThe number of linear equations. n >= 0.
innrhsThe number of right hand sides. nrhs >= 0.
inAPThe upper or lower triangle of the Hermitian matrix A, packed columnwise. Array of dimension (n*(n+1)/2).
inoutAFPIf fact = ‘F’, contains the factored form from ZHPTRF. If fact = ‘N’, on exit contains the factorization. Array of dimension (n*(n+1)/2).
inoutipivIf fact = ‘F’, contains the pivot details from ZHPTRF. If fact = ‘N’, on exit contains the pivot details. Array of dimension (n).
inBThe N-by-NRHS right hand side matrix B. Array of dimension (ldb, nrhs).
inldbThe leading dimension of B. ldb >= max(1,n).
outXThe N-by-NRHS solution matrix X. Array of dimension (ldx, nrhs).
inldxThe leading dimension of X. ldx >= max(1,n).
outrcondThe reciprocal condition number estimate.
outferrForward error bounds. Array of dimension (nrhs).
outberrBackward error bounds. Array of dimension (nrhs).
outworkComplex workspace array of dimension (2*n).
outrworkReal workspace array of dimension (n).
outinfo= 0: successful exit
< 0: if info = -i, the i-th argument had an illegal value
> 0: if info = i, and i is <= n: D(i,i) is exactly zero. RCOND = 0 is returned. = n+1: D is nonsingular, but RCOND is less than machine precision.
void zhpsvx(
const char* fact,
const char* uplo,
const INT n,
const INT nrhs,
const c128* restrict AP,
c128* restrict AFP,
INT* restrict ipiv,
const c128* restrict B,
const INT ldb,
c128* restrict X,
const INT ldx,
f64* rcond,
f64* restrict ferr,
f64* restrict berr,
c128* restrict work,
f64* restrict rwork,
INT* info
);