---
name: "zpstrf.f"
section: "3"
platform: "linux"
package: "lapack-doc"
version: "3.12.1-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/zpstrf.f"
---

# zpstrf.f(3)

## NAME

SRC/zpstrf.f

## SYNOPSIS

### Functions/Subroutines

subroutine **zpstrf** (uplo, n, a, lda, piv, rank, tol, work, info)\
 **ZPSTRF** computes the Cholesky factorization with complete pivoting of a complex Hermitian positive semidefinite matrix.

## Function/Subroutine Documentation

### subroutine zpstrf (character uplo, integer n, complex\*16, dimension( lda, \* ) a, integer lda, integer, dimension( n ) piv, integer rank, double precision tol, double precision, dimension( 2\*n ) work, integer info)

**ZPSTRF** computes the Cholesky factorization with complete pivoting of a complex Hermitian positive semidefinite matrix.

**Purpose:**

```
!>
!> ZPSTRF computes the Cholesky factorization with complete
!> pivoting of a complex Hermitian positive semidefinite matrix A.
!>
!> The factorization has the form
!>    P**T * A * P = U**H * U ,  if UPLO = 'U',
!>    P**T * A * P = L  * L**H,  if UPLO = 'L',
!> where U is an upper triangular matrix and L is lower triangular, and
!> P is stored as vector PIV.
!>
!> This algorithm does not attempt to check that A is positive
!> semidefinite. This version of the algorithm calls level 3 BLAS.
!>
```

**Parameters**

*UPLO*

```
!>          UPLO is CHARACTER*1
!>          Specifies whether the upper or lower triangular part of the
!>          symmetric matrix A is stored.
!>          = 'U':  Upper triangular
!>          = 'L':  Lower triangular
!>
```

*N*

```
!>          N is INTEGER
!>          The order of the matrix A.  N >= 0.
!>
```

*A*

```
!>          A is COMPLEX*16 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.
!>
!>          On exit, if INFO = 0, the factor U or L from the Cholesky
!>          factorization as above.
!>
```

*LDA*

```
!>          LDA is INTEGER
!>          The leading dimension of the array A.  LDA >= max(1,N).
!>
```

*PIV*

```
!>          PIV is INTEGER array, dimension (N)
!>          PIV is such that the nonzero entries are P( PIV(K), K ) = 1.
!>
```

*RANK*

```
!>          RANK is INTEGER
!>          The rank of A given by the number of steps the algorithm
!>          completed.
!>
```

*TOL*

```
!>          TOL is DOUBLE PRECISION
!>          User defined tolerance. If TOL < 0, then N*U*MAX( A(K,K) )
!>          will be used. The algorithm terminates at the (K-1)st step
!>          if the pivot <= TOL.
!>
```

*WORK*

```
!>          WORK is DOUBLE PRECISION array, dimension (2*N)
!>          Work space.
!>
```

*INFO*

```
!>          INFO is INTEGER
!>          < 0: If INFO = -K, the K-th argument had an illegal value,
!>          = 0: algorithm completed successfully, and
!>          > 0: the matrix A is either rank deficient with computed rank
!>               as returned in RANK, or is not positive semidefinite. See
!>               Section 7 of LAPACK Working Note #161 for further
!>               information.
!>
```

**Author**

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

Definition at line **141** of file **zpstrf.f**.

## Author

Generated automatically by Doxygen for LAPACK from the source code.
