Developer Reference for Intel® oneAPI Math Kernel Library for Fortran
?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. Specifies the order of the matrix A. The value of n must be at least zero.
- 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 , D ( k , k ) is exactly zero. The factorization are completed, but the block diagonal matrix D is exactly singular, and division by zero will occur if it is used to solve a system of equations.