cspsv
cspsv - compute the solution to a complex system of linear equations A * X = B,
SUBROUTINE CSPSV( UPLO, N, NRHS, A, IPIVOT, B, LDB, INFO)
CHARACTER * 1 UPLO
COMPLEX A(*), B(LDB,*)
INTEGER N, NRHS, LDB, INFO
INTEGER IPIVOT(*)
SUBROUTINE CSPSV_64( UPLO, N, NRHS, A, IPIVOT, B, LDB, INFO)
CHARACTER * 1 UPLO
COMPLEX A(*), B(LDB,*)
INTEGER*8 N, NRHS, LDB, INFO
INTEGER*8 IPIVOT(*)
SUBROUTINE SPSV( UPLO, [N], [NRHS], A, IPIVOT, B, [LDB], [INFO])
CHARACTER(LEN=1) :: UPLO
COMPLEX, DIMENSION(:) :: A
COMPLEX, DIMENSION(:,:) :: B
INTEGER :: N, NRHS, LDB, INFO
INTEGER, DIMENSION(:) :: IPIVOT
SUBROUTINE SPSV_64( UPLO, [N], [NRHS], A, IPIVOT, B, [LDB], [INFO])
CHARACTER(LEN=1) :: UPLO
COMPLEX, DIMENSION(:) :: A
COMPLEX, DIMENSION(:,:) :: B
INTEGER(8) :: N, NRHS, LDB, INFO
INTEGER(8), DIMENSION(:) :: IPIVOT
#include <sunperf.h>
void cspsv(char uplo, int n, int nrhs, complex *a, int *ipivot, complex *b, int ldb, int *info);
void cspsv_64(char uplo, long n, long nrhs, complex *a, long *ipivot, complex *b, long ldb, long *info);
cspsv computes the solution to a complex system of linear equations
A * X = B,
where A is an N-by-N symmetric matrix stored in packed format and X
and B are N-by-NRHS matrices.
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.
-
* UPLO (input)
-
-
* N (input)
-
The number of linear equations, i.e., the order of the
matrix A. N >= 0.
-
* NRHS (input)
-
The number of right hand sides, i.e., the number of columns
of the matrix B. NRHS >= 0.
-
* A (input/output)
-
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 A as follows:
if UPLO = 'U', A(i + (j-1)*j/2) = A(i,j) for 1<=i<=j;
if UPLO = 'L', A(i + (j-1)*(2n-j)/2) = A(i,j) for j<=i<=n.
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 by CSPTRF, stored as
a packed triangular matrix in the same storage format as A.
-
* IPIVOT (output)
-
Details of the interchanges and the block structure of D, as
determined by CSPTRF. If IPIVOT(k) > 0, then rows and columns
k and IPIVOT(k) were interchanged, and D(k,k) is a 1-by-1
diagonal block. If UPLO = 'U' and IPIVOT(k) = IPIVOT(k-1) < 0,
then rows and columns k-1 and -IPIVOT(k) were interchanged and
D(k-1:k,k-1:k) is a 2-by-2 diagonal block. If UPLO = 'L' and
IPIVOT(k) = IPIVOT(k+1) < 0, then rows and columns k+1 and -IPIVOT(k)
were interchanged and D(k:k+1,k:k+1) is a 2-by-2 diagonal block.
-
* B (input/output)
-
On entry, the N-by-NRHS right hand side matrix B.
On exit, if INFO = 0, the N-by-NRHS solution matrix X.
-
* LDB (input)
-
The leading dimension of the array B. LDB >= max(1,N).
-
* INFO (output)
-