Contents

# ?hetrf_rook

Computes the bounded Bunch-Kaufman factorization of a complex Hermitian matrix.

## Syntax

Include Files
• mkl.h
Description
The routine computes the factorization of a complex Hermitian matrix
A
using the bounded Bunch-Kaufman diagonal pivoting method:
• if
uplo
=
'U'
,
A
=
U*D*U
H
• if
uplo
=
'L'
,
A
=
L*D*L
H
,
where
A
is the input matrix,
U
(or
L
) is a product of permutation and unit upper ( or lower) triangular matrices, and
D
is a Hermitian block-diagonal matrix with 1-by-1 and 2-by-2 diagonal blocks.
This is the blocked version of the algorithm, calling Level 3 BLAS.
Input Parameters
matrix_layout
Specifies whether matrix storage layout for array
b
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 of
A
is stored:
If
uplo
=
'U'
, the array
a
stores the upper triangular part of the matrix
A
.
If
uplo
=
'L'
, the array
a
stores the lower triangular part of the matrix
A
.
n
The order of matrix
A
;
n
0.
a
Array
a
, size
(
lda
*
n
)
The array
a
contains the upper or the lower triangular part of the matrix
A
(see
uplo
).
If
uplo
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
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
a
; at least
max(1,
n
)
.
Output Parameters
a
The block diagonal matrix
D
and the multipliers used to obtain the factor
U
or
L
(see Application Notes for further details).
ipiv
• If
uplo
=
'U'
:
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
ipiv
(
k
) < 0 and
ipiv
(
k
- 1) < 0, then rows and columns
k
and -
ipiv
(
k
) were interchanged and rows and columns
k
- 1 and -
ipiv
(
k
- 1) were interchanged,
D
k
- 1:
k
,
k
- 1:
k
is a 2-by-2 diagonal block.
• If
uplo
=
'L'
:
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
ipiv
(
k
) < 0 and
ipiv
(
k
+ 1) < 0, then rows and columns
k
and -
ipiv
(
k
) were interchanged and rows and columns
k
+ 1 and -
ipiv
(
k
+ 1) were interchanged,
D
k
:
k
+ 1,
k
:
k
+ 1
is a 2-by-2 diagonal block.
Return Values
This function returns a value
info
.
If
info
= 0
, the execution is successful.
If
info
=
-i
, the
i
-th parameter had an illegal value.
If
info
=
i
,
D
i
i
is exactly 0. The factorization has been completed, but the block diagonal matrix
D
is exactly singular, and division by 0 will occur if you use
D
for solving a system of linear equations.
Application Notes
If
uplo
= 'U', then
A
=
U*D*U
H
, where
U
=
P
(
n
)*
U
(
n
)* ... *
P
(
k
)
U
(
k
)* ...,
i.e.,
U
is a product of terms
P
(
k
)*
U
(
k
), where
k
decreases from
n
to 1 in steps of 1 or 2, and
D
is a block diagonal matrix with 1-by-1 and 2-by-2 diagonal blocks
D
(
k
).
P
(
k
) is a permutation matrix as defined by
ipiv
(
k
), and
U
(
k
) is a unit upper triangular matrix, such that if the diagonal block
D
(
k
) is of order
s
(
s
= 1 or 2), then If
s
= 1,
D
(
k
) overwrites
A
(
k
,
k
), and
v
overwrites
A
(1:
k
-1,
k
).
If
s
= 2, the upper triangle of
D
(
k
) overwrites
A
(
k
-1,
k
-1),
A
(
k
-1,
k
), and
A
(
k
,
k
), and
v
overwrites
A
(1:
k
-2,
k
-1:
k
).
If
uplo
= 'L', then
A
=
L*D*L
H
, where
L
=
P
(1)*
L
(1)* ... *
P
(
k
)*
L
(
k
)* ...,
i.e.,
L
is a product of terms
P
(
k
)*
L
(
k
), where
k
increases from 1 to
n
in steps of 1 or 2, and
D
is a block diagonal matrix with 1-by-1 and 2-by-2 diagonal blocks
D
(
k
).
P
(
k
) is a permutation matrix as defined by
ipiv
(
k
), and
L
(
k
) is a unit lower triangular matrix, such that if the diagonal block
D
(
k
) is of order
s
(
s
= 1 or 2), then If
s
= 1,
D
(
k
) overwrites
A
(
k
,
k
), and
v
overwrites
A
(
k
+1:
n
,
k
).
If
s
= 2, the lower triangle of
D
(
k
) overwrites
A
(
k
,
k
),
A
(
k
+1,
k
), and
A
(
k
+1,
k
+1), and
v
overwrites
A
(
k
+2:
n
,
k
:
k
+1).

#### Product and Performance Information

1

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