Developer Reference

  • 2020.2
  • 07/15/2020
  • Public Content
Contents

?sytf2

Computes the factorization of a real/complex symmetric indefinite matrix, using the diagonal pivoting method (unblocked algorithm).

Syntax

call ssytf2
(
uplo
,
n
,
a
,
lda
,
ipiv
,
info
)
call dsytf2
(
uplo
,
n
,
a
,
lda
,
ipiv
,
info
)
call csytf2
(
uplo
,
n
,
a
,
lda
,
ipiv
,
info
)
call zsytf2
(
uplo
,
n
,
a
,
lda
,
ipiv
,
info
)
Include Files
  • mkl.fi
Description
The routine
?sytf2
computes the factorization of a real/complex symmetric matrix
A
using the Bunch-Kaufman diagonal pivoting method:
A
=
U
*
D
*
U
T
, or
A
=
L
*
D
*
L
T
,
where
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.
This is the unblocked version of the algorithm, calling BLAS Level 2 Routines.
Input Parameters
uplo
CHARACTER*1
.
Specifies whether the upper or lower triangular part of the symmetric matrix
A
is stored
=
'U'
: upper triangular
=
'L'
: lower triangular
n
INTEGER
. The order of the matrix
A
.
n
0
.
a
REAL
for
ssytf2
DOUBLE PRECISION
for
dsytf2
COMPLEX
for
csytf2
DOUBLE COMPLEX
for
zsytf2
.
Array,
DIMENSION
(
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
INTEGER
.
The leading dimension of the array
a
.
lda
max(1,
n
)
.
Output Parameters
a
On exit, the block diagonal matrix
D
and the multipliers used to obtain the factor
U
or
L
.
ipiv
INTEGER
.
Array,
DIMENSION
(
n
).
Details of the interchanges and the block structure of
D
If
ipiv
(
k
) > 0
, then rows and columns
k
and
ipiv
(
k
) are interchanged and
D
(
k
,
k
) is a 1-by-1 diagonal block.
If
uplo
=
'U'
and
ipiv
(
k
) =
ipiv
(
k
-1) < 0
, then rows and columns
k
-1 and -
ipiv
(
k
) are interchanged and
D
(
k
- 1:
k
,
k
- 1:
k
) is a 2-by-2 diagonal block.
If
uplo
=
'L'
and
ipiv
(
k
) =
ipiv
(
k
+1)< 0
, then rows and columns
k
+1 and -
ipiv
(
k
) were interchanged and
D
(
k
:
k
+ 1,
k:k
+ 1) is a 2-by-2 diagonal block.
info
INTEGER
.
= 0: successful exit
< 0: if
info
= -
k
, the
k-
th argument has an illegal value
> 0: if
info
=
k
,