SUBROUTINE DSPSV( UPLO, N, NRHS, A, IPIVOT, B, LDB, INFO) CHARACTER * 1 UPLO INTEGER N, NRHS, LDB, INFO INTEGER IPIVOT(*) DOUBLE PRECISION A(*), B(LDB,*) SUBROUTINE DSPSV_64( UPLO, N, NRHS, A, IPIVOT, B, LDB, INFO) CHARACTER * 1 UPLO INTEGER*8 N, NRHS, LDB, INFO INTEGER*8 IPIVOT(*) DOUBLE PRECISION A(*), B(LDB,*)
SUBROUTINE SPSV( UPLO, N, NRHS, A, IPIVOT, B, [LDB], [INFO]) CHARACTER(LEN=1) :: UPLO INTEGER :: N, NRHS, LDB, INFO INTEGER, DIMENSION(:) :: IPIVOT REAL(8), DIMENSION(:) :: A REAL(8), DIMENSION(:,:) :: B SUBROUTINE SPSV_64( UPLO, N, NRHS, A, IPIVOT, B, [LDB], [INFO]) CHARACTER(LEN=1) :: UPLO INTEGER(8) :: N, NRHS, LDB, INFO INTEGER(8), DIMENSION(:) :: IPIVOT REAL(8), DIMENSION(:) :: A REAL(8), DIMENSION(:,:) :: B
void dspsv(char uplo, int n, int nrhs, double *a, int *ipivot, double *b, int ldb, int *info);
void dspsv_64(char uplo, long n, long nrhs, double *a, long *ipivot, double *b, long ldb, long *info);
The diagonal pivoting method is used to factor A as
A = U * D * U**T, if UPLO = 'U', or A = L * D * L**T, if UPLO = 'L',
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.
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 by SSPTRF, stored as a packed triangular matrix in the same storage format as A.