Developer Reference

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

?hetf2_rook

Computes the factorization of a complex Hermitian matrix, using the bounded Bunch-Kaufman diagonal pivoting method (unblocked algorithm).

Syntax

call chetf2_rook
(
uplo
,
n
,
a
,
lda
,
ipiv
,
info
)
call zhetf2_rook
(
uplo
,
n
,
a
,
lda
,
ipiv
,
info
)
Include Files
  • mkl.fi
Description
The routine computes the factorization of a complex Hermitian matrix
A
using the bounded Bunch-Kaufman ("rook") diagonal pivoting method:
A
=
U
*
D
*
U
H
or
A
=
L
*
D
*
L
H
where
U
(or
L
) is a product of permutation and unit upper (lower) triangular matrices,
U
H
is the conjugate transpose of
U
, and
D
is Hermitian 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 Hermitian matrix
A
is stored:
=
'U'
: Upper triangular
=
'L'
: Lower triangular
n
INTEGER
. The order of the matrix
A
.
n
0
.
a
COMPLEX
for
chetf2_rook
DOUBLE COMPLEX
for
zhetf2_rook
.
Array,
DIMENSION
(
lda
,
n
).
On entry, the Hermitian 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
) were interchanged and
D(k,k)
is a 1-by-1 diagonal block.
If
uplo
=
'U'
and
ipiv
(
k
) < 0
and
ipiv
(
k
- 1) < 0
, then rows and columns
k
and -
ipiv
(
k
) were interchanged, rows and columns
k
- 1 and -
ipiv
(
k
- 1) were interchanged, and
D
k
-1:
k
,
k
-1:
k
is a 2-by-2 diagonal block.
If
uplo
=
'L'
and
ipiv
(
k
) < 0
and
ipiv
(
k
+ 1) < 0
, then rows and columns