LAPACK 3.12.1
LAPACK: Linear Algebra PACKage
|
subroutine sptsvx | ( | character | fact, |
integer | n, | ||
integer | nrhs, | ||
real, dimension( * ) | d, | ||
real, dimension( * ) | e, | ||
real, dimension( * ) | df, | ||
real, dimension( * ) | ef, | ||
real, dimension( ldb, * ) | b, | ||
integer | ldb, | ||
real, dimension( ldx, * ) | x, | ||
integer | ldx, | ||
real | rcond, | ||
real, dimension( * ) | ferr, | ||
real, dimension( * ) | berr, | ||
real, dimension( * ) | work, | ||
integer | info ) |
SPTSVX computes the solution to system of linear equations A * X = B for PT matrices
Download SPTSVX + dependencies [TGZ] [ZIP] [TXT]
!> !> SPTSVX uses the factorization A = L*D*L**T to compute the solution !> to a real system of linear equations A*X = B, where A is an N-by-N !> symmetric positive definite tridiagonal matrix 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: !> !> 1. If FACT = 'N', the matrix A is factored as A = L*D*L**T, where L !> is a unit lower bidiagonal matrix and D is diagonal. The !> factorization can also be regarded as having the form !> A = U**T*D*U. !> !> 2. If the leading principal minor of order i is not positive, !> 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. !> !> 3. The system of equations is solved for X using the factored form !> of A. !> !> 4. Iterative refinement is applied to improve the computed solution !> matrix and calculate error bounds and backward error estimates !> for it. !>
[in] | FACT | !> FACT is CHARACTER*1 !> Specifies whether or not the factored form of A has been !> supplied on entry. !> = 'F': On entry, DF and EF contain the factored form of A. !> D, E, DF, and EF will not be modified. !> = 'N': The matrix A will be copied to DF and EF and !> factored. !> |
[in] | N | !> N is INTEGER !> The order of the matrix A. N >= 0. !> |
[in] | NRHS | !> NRHS is INTEGER !> The number of right hand sides, i.e., the number of columns !> of the matrices B and X. NRHS >= 0. !> |
[in] | D | !> D is REAL array, dimension (N) !> The n diagonal elements of the tridiagonal matrix A. !> |
[in] | E | !> E is REAL array, dimension (N-1) !> The (n-1) subdiagonal elements of the tridiagonal matrix A. !> |
[in,out] | DF | !> DF is REAL array, dimension (N) !> If FACT = 'F', then DF is an input argument and on entry !> contains the n diagonal elements of the diagonal matrix D !> from the L*D*L**T factorization of A. !> If FACT = 'N', then DF is an output argument and on exit !> contains the n diagonal elements of the diagonal matrix D !> from the L*D*L**T factorization of A. !> |
[in,out] | EF | !> EF is REAL array, dimension (N-1) !> If FACT = 'F', then EF is an input argument and on entry !> contains the (n-1) subdiagonal elements of the unit !> bidiagonal factor L from the L*D*L**T factorization of A. !> If FACT = 'N', then EF is an output argument and on exit !> contains the (n-1) subdiagonal elements of the unit !> bidiagonal factor L from the L*D*L**T factorization of A. !> |
[in] | B | !> B is REAL array, dimension (LDB,NRHS) !> The N-by-NRHS right hand side matrix B. !> |
[in] | LDB | !> LDB is INTEGER !> The leading dimension of the array B. LDB >= max(1,N). !> |
[out] | X | !> X is REAL array, dimension (LDX,NRHS) !> If INFO = 0 of INFO = N+1, the N-by-NRHS solution matrix X. !> |
[in] | LDX | !> LDX is INTEGER !> The leading dimension of the array X. LDX >= max(1,N). !> |
[out] | RCOND | !> RCOND is REAL !> The reciprocal condition number of the matrix A. If RCOND !> is less than the machine precision (in particular, if !> RCOND = 0), the matrix is singular to working precision. !> This condition is indicated by a return code of INFO > 0. !> |
[out] | FERR | !> FERR is REAL array, dimension (NRHS) !> The forward error bound for each solution vector !> X(j) (the j-th column of the solution matrix X). !> If XTRUE is the true solution corresponding to X(j), FERR(j) !> is an estimated upper bound for the magnitude of the largest !> element in (X(j) - XTRUE) divided by the magnitude of the !> largest element in X(j). !> |
[out] | BERR | !> BERR is REAL array, dimension (NRHS) !> The componentwise relative backward error of each solution !> vector X(j) (i.e., the smallest relative change in any !> element of A or B that makes X(j) an exact solution). !> |
[out] | WORK | !> WORK is REAL array, dimension (2*N) !> |
[out] | INFO | !> INFO is INTEGER !> = 0: successful exit !> < 0: if INFO = -i, the i-th argument had an illegal value !> > 0: if INFO = i, and i is !> <= N: the leading principal minor of order i of A !> is not positive, so the factorization could not !> be completed, and the solution has not been !> computed. RCOND = 0 is returned. !> = N+1: U is nonsingular, but RCOND is less than machine !> precision, meaning that the matrix is singular !> to working precision. Nevertheless, the !> solution and error bounds are computed because !> there are a number of situations where the !> computed solution can be more accurate than the !> value of RCOND would suggest. !> |
Definition at line 224 of file sptsvx.f.