Developer Reference for Intel® oneAPI Math Kernel Library for Fortran

ID 766686
Date 10/31/2024
Public
Document Table of Contents

?lasyf

Computes a partial factorization of a symmetric matrix, using the diagonal pivoting method.

Syntax

call slasyf( uplo, n, nb, kb, a, lda, ipiv, w, ldw, info )

call dlasyf( uplo, n, nb, kb, a, lda, ipiv, w, ldw, info )

call clasyf( uplo, n, nb, kb, a, lda, ipiv, w, ldw, info )

call zlasyf( uplo, n, nb, kb, a, lda, ipiv, w, ldw, info )

Include Files

  • mkl.fi

Description

The routine ?lasyf computes a partial factorization of a symmetric matrix A using the Bunch-Kaufman diagonal pivoting method. The partial factorization has the form:

If uplo = 'U':

Equation

uplo = 'L'

Equation

where the order of D is at most nb.

The actual order is returned in the argument kb, and is either nb or nb-1, or n if nnb.

This is an auxiliary routine called by ?sytrf. It uses blocked code (calling Level 3 BLAS) to update the submatrix A11 (if uplo = 'U') or A22 (if uplo = 'L').

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.

nb

INTEGER. The maximum number of columns of the matrix A that should be factored. nb should be at least 2 to allow for 2-by-2 pivot blocks.

a

REAL for slasyf

DOUBLE PRECISION for dlasyf

COMPLEX for clasyf

DOUBLE COMPLEX for zlasyf.

Array, DIMENSION (lda, n). 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).

w

REAL for slasyf

DOUBLE PRECISION for dlasyf

COMPLEX for clasyf

DOUBLE COMPLEX for zlasyf.

Workspace array, DIMENSION (ldw, nb).

ldw

INTEGER. The leading dimension of the array w. ldw max(1,n).

Output Parameters

kb

INTEGER. The number of columns of A that were actually factored kb is either nb-1 or nb, or n if nnb.

a

On exit, a contains details of the partial factorization.

ipiv

INTEGER. Array, DIMENSION (n ). Details of the interchanges and the block structure of D.

If uplo = 'U', only the last kb elements of ipiv are set;

if uplo = 'L', only the first kb elements are set.

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) = ipiv(k-1) < 0, then rows and columns k-1 and -ipiv(k) were 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, D(k, k) is exactly zero. The factorization has been completed, but the block diagonal matrix D is exactly singular.