# ?potf2

Computes the Cholesky factorization of a symmetric/Hermitian positive-definite matrix (unblocked algorithm).

## Syntax

call spotf2( uplo, n, a, lda, info )

call dpotf2( uplo, n, a, lda, info )

call cpotf2( uplo, n, a, lda, info )

call zpotf2( uplo, n, a, lda, info )

## Description

The routine ?potf2 computes the Cholesky factorization of a real symmetric or complex Hermitian positive definite matrix A. The factorization has the form

`A = UT*U` for real flavors, `A = UH*U` for complex flavors if `uplo = 'U'`, or

`A = L*LT` for real flavors, `A = L*LH` for complex flavors if `uplo = 'L'`,

where U is an upper triangular matrix, and L is lower triangular.

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/Hermitian matrix A is stored.

  = 'U': upper triangular

  = 'L': lower triangular

n

  INTEGER. The order of the matrix A. `n ≥ 0`.

a

  REAL for spotf2

  DOUBLE PRECISION or dpotf2

  COMPLEX for cpotf2

  COMPLEX*16 for zpotf2.

  Array, DIMENSION (lda, n).

  On entry, the symmetric/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, If `info = 0`, the factor U or L from the Cholesky factorization `A=UT*U` (`A=UH*U`), or `A= L*LT` (`A = L*LH`).

info

  INTEGER.

  = 0: successful exit

  < 0: if `info = -k`, the k-th argument had an illegal value

  > 0: if `info = k`, the leading minor of order k is not positive definite, and the factorization could not be completed.

Parent topic: Auxiliary Routines