?sysv_rook
?sysv_rook
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_rook
(
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_rook
(
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_rook
(
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_rook
(
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
?sysv_rook
routine is called to compute the factorization of a complex symmetric matrix A
using the bounded Bunch-Kaufman ("rook") diagonal pivoting method.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 second dimension ofamust be at leastmax(1,.n)The arraybcontains the matrixBwhose columns are the right-hand sides for the systems of equations. The second dimension ofbmust be at leastmax(1,.nrhs)
- lda
- The leading dimension ofa;.lda≥max(1,n)
- ldb
- The leading dimension ofb;.ldb≥max(1,n) for column major layout andldb≥nrhs) for 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 ofA.
- 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.If, then rows and columnsipiv[k- 1] > 0kandipiv[k- 1] were interchanged andDis a 1-by-1 diagonal block.k,kIfanduplo='U'andipiv[k- 1] < 0, then rows and columnsipiv[k- 2] < 0kand -ipiv[k- 1] were interchanged, rows and columnsk- 1 and -ipiv[k- 2] were interchanged, andis a 2-by-2 diagonal block.Dk-1:k,k-1:kIfanduplo='L'andipiv[k- 1] < 0, then rows and columnsipiv[k] < 0kand-ipiv[k- 1] were interchanged, rows and columnsk+ 1 and-ipiv[k] were interchanged, andis a 2-by-2 diagonal block.Dk:k+1,k:k+1
Return Values
This function returns a value
info
.If , the execution is successful.
info
= 0If , the
info
= -i
i
-th parameter 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.