# pstrf - Man Page

pstrf: triangular factor, with pivoting

## Synopsis

### Functions

subroutine cpstrf (uplo, n, a, lda, piv, rank, tol, work, info)
CPSTRF computes the Cholesky factorization with complete pivoting of complex Hermitian positive semidefinite matrix.
subroutine dpstrf (uplo, n, a, lda, piv, rank, tol, work, info)
DPSTRF computes the Cholesky factorization with complete pivoting of a real symmetric positive semidefinite matrix.
subroutine spstrf (uplo, n, a, lda, piv, rank, tol, work, info)
SPSTRF computes the Cholesky factorization with complete pivoting of a real symmetric positive semidefinite matrix.
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 Documentation

### subroutine cpstrf (character uplo, integer n, complex, dimension( lda, * ) a, integer lda, integer, dimension( n ) piv, integer rank, real tol, real, dimension( 2*n ) work, integer info)

CPSTRF computes the Cholesky factorization with complete pivoting of complex Hermitian positive semidefinite matrix.

Purpose:

``` CPSTRF 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 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 REAL
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 REAL 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

NAG Ltd.

Definition at line 141 of file cpstrf.f.

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

DPSTRF computes the Cholesky factorization with complete pivoting of a real symmetric positive semidefinite matrix.

Purpose:

``` DPSTRF computes the Cholesky factorization with complete
pivoting of a real symmetric positive semidefinite matrix A.

The factorization has the form
P**T * A * P = U**T * U ,  if UPLO = 'U',
P**T * A * P = L  * L**T,  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 DOUBLE PRECISION 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

NAG Ltd.

Definition at line 141 of file dpstrf.f.

### subroutine spstrf (character uplo, integer n, real, dimension( lda, * ) a, integer lda, integer, dimension( n ) piv, integer rank, real tol, real, dimension( 2*n ) work, integer info)

SPSTRF computes the Cholesky factorization with complete pivoting of a real symmetric positive semidefinite matrix.

Purpose:

``` SPSTRF computes the Cholesky factorization with complete
pivoting of a real symmetric positive semidefinite matrix A.

The factorization has the form
P**T * A * P = U**T * U ,  if UPLO = 'U',
P**T * A * P = L  * L**T,  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 REAL 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 REAL
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 REAL 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

NAG Ltd.

Definition at line 140 of file spstrf.f.

### 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