?sysv
?sysv
Computes the solution to the system of linear equations with a real or complex symmetric coefficient matrix A and multiple right-hand sides.
Syntax
lapack_int
LAPACKE_ssysv
(
int
matrix_layout
,
char
uplo
,
lapack_int
n
,
lapack_int
nrhs
,
float
*
a
,
lapack_int
lda
,
lapack_int
*
ipiv
,
float
*
b
,
lapack_int
ldb
);
lapack_int
LAPACKE_dsysv
(
int
matrix_layout
,
char
uplo
,
lapack_int
n
,
lapack_int
nrhs
,
double
*
a
,
lapack_int
lda
,
lapack_int
*
ipiv
,
double
*
b
,
lapack_int
ldb
);
lapack_int
LAPACKE_csysv
(
int
matrix_layout
,
char
uplo
,
lapack_int
n
,
lapack_int
nrhs
,
lapack_complex_float
*
a
,
lapack_int
lda
,
lapack_int
*
ipiv
,
lapack_complex_float
*
b
,
lapack_int
ldb
);
lapack_int
LAPACKE_zsysv
(
int
matrix_layout
,
char
uplo
,
lapack_int
n
,
lapack_int
nrhs
,
lapack_complex_double
*
a
,
lapack_int
lda
,
lapack_int
*
ipiv
,
lapack_complex_double
*
b
,
lapack_int
ldb
);
Include Files
- mkl.h
Description
The routine solves for , where
X
the real or complex system of linear equations A*X
= B
A
is an n
-by-n
symmetric matrix, the columns of matrix B
are individual right-hand sides, and the columns of X
are the corresponding solutions.The diagonal pivoting method is used to factor or , where
A
as A
= U*D*U
T
A
= L*D*L
T
U
(or L
) is a product of permutation and unit upper (lower) triangular matrices, and 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
Input Parameters
- matrix_layout
- Specifies whether matrix storage layout is row major (LAPACK_ROW_MAJOR) or column major (LAPACK_COL_MAJOR).
- uplo
- Must be'U'or'L'.Indicates whether the upper or lower triangular part ofAis stored:If, the upper triangle ofuplo='U'Ais stored.If, the lower triangle ofuplo='L'Ais stored.
- n
- The order of matrixA;n≥0.
- nrhs
- The number of right-hand sides; the number of columns in.B;nrhs≥0
- a,b
- Arrays:a(size max(1,,lda*n))bof size max(1,.ldb*nrhs) for column major layout and max(1,ldb*n) for row major layoutThe arrayacontains the upper or the lower triangular part of the symmetric matrixA(seeuplo).The arraybcontains the matrixBwhose columns are the right-hand sides for the systems of equations.
- lda
- The leading dimension ofa;.lda≥max(1,n)
- ldb
- The leading dimension ofb;.ldb≥max(1,n) for column major layout andldb≥nrhsfor row major layout
Output Parameters
- a
- If,info= 0ais overwritten by the block-diagonal matrixDand the multipliers used to obtain the factorU(orL) from the factorization ofAas computed by?sytrf.
- b
- If,info= 0bis overwritten by the solution matrixX.
- ipiv
- Array, size at leastmax(1,. Contains details of the interchanges and the block structure ofn)D, as determined by?sytrf.If, thenipiv[i-1] =k>0is a 1-by-1 diagonal block, and thediii-th row and column ofAwas interchanged with thek-th row and column.Ifanduplo='U'ipiv[i] =ipiv[i-1] = -m< 0, thenDhas a 2-by-2 block in rows/columnsiand, and (i+1)-th row and column ofiAwas interchanged with them-th row and column.Ifanduplo='L'ipiv[i] =ipiv[i-1] = -m< 0, thenDhas a 2-by-2 block in rows/columnsiand, and (i+1)-th row and column ofi+1Awas interchanged with them-th row and column.
Return Values
This function returns a value
info
.If , the execution is successful.
info
= 0If , parameter
info
= -i
i
had an illegal value. If , is 0. The factorization has been completed, but
info
= i
d
i
i
D
is exactly singular, so the solution could not be computed.