SRC/cpstf2.f(3)

πŸ¦‹ SRC/cpstf2.f β€” the LAPACK library functions manual, bestie edition πŸ¦‹

okay so first things first: the manual name is SRC/cpstf2.f and honestly? she's a whole moment. it's a LAPACK library functions manual page and we're about to get into it πŸ’…


✨ NAME ✨

SRC/cpstf2.f β€” that's her. that's the file. periodt πŸŽ€


✨ SYNOPSIS ✨

🌸 Functions/Subroutines 🌸

  • subroutine cpstf2 (uplo, n, a, lda, piv, rank, tol, work, info) β€” CPSTF2 computes the Cholesky factorization with complete pivoting of complex Hermitian positive semidefinite matrix. yes that's a lot of words, we'll break it down, breathe 🫢

✨ Function/Subroutine Documentation ✨

subroutine cpstf2 (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)

CPSTF2 computes the Cholesky factorization with complete pivoting of complex Hermitian positive semidefinite matrix. that's the whole vibe of this file ngl πŸ’–

πŸ’œ Purpose πŸ’œ

fortran !> !> CPSTF2 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 2 BLAS. !>

so like, P is stored as vector PIV, U is upper triangular, L is lower triangular β€” all very demure, all very mindful ✨ and listen: this algorithm does not attempt to check that A is positive semidefinite β€” she is NOT doing that labor, do not come for her 😭 and just so we're clear, this version of the algorithm calls level 2 BLAS, iykyk πŸ‘‘


πŸ“ Parameters πŸ“

okay this is the part where you take notes, bestie, because these all matter and nothing gets skipped πŸ’…

πŸŽ€ UPLO

fortran !> 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 >

UPLO is CHARACTER*1, and she decides which triangle of the symmetric matrix A we're even storing. 'U' = upper triangular, 'L' = lower triangular. pick your fighter 🌈

πŸŽ€ N

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

N is INTEGER β€” the order of the matrix A, and it's gotta be N >= 0. no negative orders, that's not the vibe πŸ™ˆ

πŸŽ€ A

fortran !> 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. >

A is a COMPLEX array, dimension (LDA,N). on entry she's the symmetric matrix A β€” if UPLO = 'U' then the leading n by n upper triangular part of A holds the upper triangular part of the matrix A, and the strictly lower triangular part of A is not referenced (she's minding her business πŸ’€). if UPLO = 'L', flip it: the leading n by n lower triangular part of A holds the lower triangular part of the matrix A, and the strictly upper triangular part of A is not referenced.

on exit, if INFO = 0, you get the factor U or L from the Cholesky factorization as above. glow up ✨

πŸŽ€ PIV

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

PIV is an INTEGER array, dimension (N). PIV is such that the nonzero entries are P( PIV(K), K ) = 1. that's the permutation doing her little thing, no notes πŸ‘‘

πŸŽ€ RANK

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

RANK is INTEGER β€” the rank of A, given by the number of steps the algorithm completed. she counts her wins fr fr 🫢

πŸŽ€ TOL

fortran !> 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. >

TOL is REAL β€” your very own user defined tolerance, main character energy. 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. so like, know your limits πŸ’…

πŸŽ€ LDA

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

LDA is INTEGER β€” the leading dimension of the array A, and LDA >= max(1,N). non-negotiable 🌸

πŸŽ€ WORK

fortran !> WORK is REAL array, dimension (2*N) !> Work space. >

WORK is a REAL array, dimension (2*N). it's work space. she works hard so you don't have to 😭

πŸŽ€ INFO

fortran !> 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. >

INFO is INTEGER and she's the vibe check at the end:

  • < 0: if INFO = -K, the K-th argument had an illegal value πŸ‘€
  • = 0: algorithm completed successfully β€” we love a happy ending πŸ’–
  • > 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. go read it, i'll wait πŸ“–

πŸ‘‘ Author πŸ‘‘

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

icons, all of them, no cap πŸŽ€

Definition at line 141 of file cpstf2.f. like, exactly there. don't @ me πŸ’…


🌟 Author 🌟

Generated automatically by Doxygen for LAPACK from the source code. yes she was built by a robot and she still ate πŸ”₯


okay that's the whole page bestie, you're officially fluent 🧚 and for the cute sign-off: this was LAPACK, Version 3.12.0, on the page for SRC/cpstf2.f(3) β€” stan her, cite her, factorize responsibly πŸ’œπŸŒΈβœ¨

πŸ“¦ where this page comes from