pstrf(3)

pstrf(3) β€” Library Functions Manual ✨

okay so bestie, buckle up πŸ’– this is pstrf from the Library Functions Manual, and it's literally the triangular factor girly with pivoting. she's giving linear algebra main character energy and we're gonna get through her together 🫢


🌸 NAME 🌸

pstrf β€” triangular factor, with pivoting


✨ SYNOPSIS ✨

the functions (yes there's a whole squad) πŸ’…

  • 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.

πŸ¦‹ DETAILED DESCRIPTION πŸ¦‹

bestie this is the overview zone β€” the actual deets live in the Function Documentation section right below, where each of the four routines gets her own moment πŸ‘‘


πŸ’œ FUNCTION DOCUMENTATION πŸ’œ

πŸŽ€ subroutine cpstrf

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. iconic behavior fr fr πŸ”₯

Purpose:

ok so here's the vibe:

!>
!> 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.
!>
πŸ’€ real talk: this algorithm does not attempt to check that A is positive semidefinite β€” she's trusting you, bestie, so don't embarrass her.

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
  • Univ. of Colorado Denver
  • NAG Ltd.

Definition at line 141 of file cpstrf.f.


πŸ“ subroutine dpstrf

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. the double precision girlie said "anything you can do I can do better" πŸ’…

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.
!>
πŸ’€ again, no cap: this algorithm does not attempt to check that A is positive semidefinite.

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
  • Univ. of Colorado Denver
  • NAG Ltd.

Definition at line 141 of file dpstrf.f.


🧚 subroutine spstrf

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. single precision but make it fashion 🌸

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.
!>
πŸ’€ say it with me one more time: this algorithm does not attempt to check that A is positive semidefinite.

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

okay so INFO for spstrf is about to be a whole thing and we're picking it up in part 2 bestie πŸ’…βœ¨ hold that thought 🫢

  • INFO β€” it's an INTEGER, and honestly it's the group-chat read receipt of the whole call πŸ’… Here's the decode:
    • < 0 β€” if INFO = -K, then the K-th argument had an illegal value. Rude of it, honestly.
    • = 0 β€” algorithm completed successfully. slay ✨
    • > 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. iykyk πŸ“–

πŸ’– Author

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

Definition at line 140 of file spstrf.f.


πŸ¦‹ subroutine zpstrf

okay bestie, this is the complex one β€” literally. Same energy, but now we're in COMPLEX*16 territory πŸŒ€

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. Like, it's not gonna double-check your work for you, bestie. 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. the way it just *indexes*… πŸŽ€
  • RANK β€” RANK is INTEGER. The rank of A given by the number of steps the algorithm completed. she really said "I'll get as far as I get" πŸ’…
  • 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. (yes, DOUBLE PRECISION even in the complex routine β€” that's literally what it says, don't come for me 🫢)
  • 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. no humans were harmed in the making of this manpage πŸ€–πŸ’–


and that's a wrap on pstrf(3) bestie!! πŸŽ€βœ¨ this whole iconic little page is from LAPACK, Version 3.12.0 β€” it lives at pstrf(3) in the manual, and it was generated for you with love (and Doxygen) from the LAPACK source code. go forth and pivot completely, my main character πŸ¦‹πŸ‘‘πŸ’œ

πŸ“¦ where this page comes from