Developer Reference

Contents

?sysv_aa

Computes the solution to a system of linear equations A * X = B for symmetric matrices.
lapack_int
LAPACKE_ssysv_aa
(
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_aa
(
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_aa
(
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_aa
(
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
);
Description
The
?sysv
routine computes the solution to a complex system of linear equations A * X = B, where A is an
n
-by-
n
symmetric matrix and X and B are
n
-by-
nrhs
matrices.
Aasen's algorithm is used to factor A as A = U * T * U
T
, if
uplo
=
'U'
, or A = L * T * L
T
, if
uplo
=
'L'
, where U (or L) is a product of permutation and unit upper (lower) triangular matrices, and T is symmetric tri-diagonal. 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
  • =
    'U'
    : The upper triangle of A is stored.
  • =
    'L'
    : The lower triangle of A is stored.
n
The number of linear equations; that is, the order of the matrix A.
n
≥ 0.
nrhs
The number of right-hand sides; that is, the number of columns of the matrix B.
nrhs
≥ 0.
A
Array of size max(1,
lda
*
n
).
On entry, the symmetric matrix A. If
uplo
=
'U'
, the leading
n
-by-
n
upper triangular part of A contains the upper triangular part of the matrix A, and the strictly lower triangular part of A is not referenced. If
uplo
=
'L'
, the leading
n
-by-
n
lower triangular part of A contains the lower triangular part of the matrix A, and the strictly upper triangular part of A is not referenced.
lda
The leading dimension of the array
A
.
B
Array of size max(1,
ldb
*
nrhs
) for column-major layout and max(1,
ldb
*
n
) for row-major layout.
On entry, the
n
-by-
nrhs
right-hand side matrix B.
ldb
The leading dimension of the array
B
.
ldb
≥ max(1,
n
) for column-major layout and
ldb
nrhs
for row-major layout.
Output Parameters
A
On exit, if
info
= 0, the tridiagonal matrix T and the multipliers used to obtain the factor U or L from the factorization A = U*T*U
T
or A = L*T*L
T
as computed by
?sytrf
.
ipiv
Array of size
n
.
On exit, it contains the details of the interchanges; that is, the row and column
k
of A were interchanged with the row and column ipiv(
k
).
B
On exit, if
info
= 0, the
n
-by-
nrhs
solution matrix X.
Return Values
This function returns a value
info
.
= 0: Successful exit.
< 0: If
info
=
-i
, the
i
th
argument had an illegal value.
> 0: If
info
=
i
, D(
i
,
i
) is exactly zero. The factorization has been completed, but the block diagonal matrix D is exactly singular, so the solution could not be computed.

Product and Performance Information

1

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.