Developer Reference

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

?sytrf_rook

Computes the bounded Bunch-Kaufman factorization of a symmetric matrix.

Syntax

call ssytrf_rook
(
uplo
,
n
,
a
,
lda
,
ipiv
,
work
,
lwork
,
info
)
call dsytrf_rook
(
uplo
,
n
,
a
,
lda
,
ipiv
,
work
,
lwork
,
info
)
call csytrf_rook
(
uplo
,
n
,
a
,
lda
,
ipiv
,
work
,
lwork
,
info
)
call zsytrf_rook
(
uplo
,
n
,
a
,
lda
,
ipiv
,
work
,
lwork
,
info
)
call sytrf_rook
(
a
[
,
uplo
]
[
,
ipiv
]
[
,
info
]
)
Include Files
  • mkl.fi
    ,
    lapack.f90
Description
The routine computes the factorization of a real/complex symmetric matrix
A
using the bounded Bunch-Kaufman ("rook") diagonal pivoting method. The form of the factorization is:
  • if
    uplo
    =
    'U'
    ,
    A
    =
    U*D*U
    T
  • if
    uplo
    =
    'L'
    ,
    A
    =
    L*D*L
    T
    ,
where
A
is the input matrix,
U
and
L
are products of permutation and triangular matrices with unit diagonal (upper triangular for
U
and lower triangular for
L
), and
D
is a symmetric block-diagonal matrix with 1-by-1 and 2-by-2 diagonal blocks.
U
and
L
have 2-by-2 unit diagonal blocks corresponding to the 2-by-2 blocks of
D
.
Input Parameters
uplo
CHARACTER*1
.
Must be
'U'
or
'L'
.
Indicates whether the upper or lower triangular part of
A
is stored and how
A
is factored:
If
uplo
=
'U'
, the array
a
stores the upper triangular part of the matrix
A
, and
A
is factored as
U*D*U
T
.
If
uplo
=
'L'
, the array
a
stores the lower triangular part of the matrix
A
, and
A
is factored as
L*D*L
T
.
n
INTEGER
.
The order of matrix
A
;
n
0.
a
REAL
for
ssytrf_rook
DOUBLE PRECISION
for
dsytrf_rook
COMPLEX
for
csytrf_rook
DOUBLE COMPLEX
for
zsytrf_rook
.
Array, size
(
lda
,
n
)
. The array
a
contains either the upper or the lower triangular part of the matrix
A
(see
uplo
).
lda
INTEGER
.
The leading dimension of
a
; at least
max(1,
n
)
.
work
Same type as
a
. A workspace array, dimension at least
max(1,
lwork
)
.
lwork
INTEGER
.
The size of the
work
array
(
lwork
n
)
.
If
lwork
= -1
, then a workspace query is assumed; the routine only calculates the optimal size of the
work
array, returns this value as the first entry of the
work
array, and no error message related to
lwork
is issued by