CSYTRF(3)
πΈ NAME πΈ
okay so bestie, this page is literally all about /home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/csytrf.f β yes that whole path, she's iconic and she's the main character here. It's a LAPACK library functions manual page, and we're about to get into it. π
β¨ SYNOPSIS β¨
Functions/Subroutines
subroutine CSYTRF (uplo, n, a, lda, ipiv, work, lwork, info)
CSYTRF
π Function/Subroutine Documentation π
subroutine CSYTRF (character uplo, integer n, complex, dimension( lda, * )
a, integer lda, integer, dimension( * ) ipiv, complex, dimension( * )
work, integer lwork, integer info)
bestie. CSYTRF. She's here to do one thing and do it well: factor a complex symmetric matrix. π¦
Purpose:
CSYTRF computes the factorization of a complex symmetric matrix A using the Bunch-Kaufman diagonal pivoting method. The form of the factorization is A = U*D*U**T or A = L*D*L**T where U (or L) is a product of permutation and unit upper (lower) triangular matrices, and D is symmetric and block diagonal with 1-by-1 and 2-by-2 diagonal blocks. This is the blocked version of the algorithm, calling Level 3 BLAS. π₯
π Parameters π
UPLOβUPLOisCHARACTER*1. Your vibe check for which triangle is stored:= 'U': Upper triangle of A is stored;= 'L': Lower triangle of A is stored.
NβNisINTEGER. The order of the matrix A.N >= 0. no cap, that's the rule.AβAisCOMPLEXarray, dimension(LDA,N). On entry, the symmetric matrix A. IfUPLO = 'U', the leadingN-by-Nupper triangular part of A contains the upper triangular part of the matrix A, and the strictly lower triangular part of A is not referenced. IfUPLO = 'L', the leadingN-by-Nlower 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, the block diagonal matrix D and the multipliers used to obtain the factor U or L (see below for further details). β¨LDAβLDAisINTEGER. The leading dimension of the array A.LDA >= max(1,N). periodt.IPIVβIPIVisINTEGERarray, dimension(N). Details of the interchanges and the block structure of D. Listen closely bestie, this is the lore:- If
IPIV(k) > 0, then rows and columnskandIPIV(k)were interchanged andD(k,k)is a 1-by-1 diagonal block. - If
UPLO = 'U'andIPIV(k) = IPIV(k-1) < 0, then rows and columnsk-1and-IPIV(k)were interchanged andD(k-1:k,k-1:k)is a 2-by-2 diagonal block. - If
UPLO = 'L'andIPIV(k) = IPIV(k+1) < 0, then rows and columnsk+1and-IPIV(k)were interchanged andD(k:k+1,k:k+1)is a 2-by-2 diagonal block. π«Ά
- If
WORKβWORKisCOMPLEXarray, dimension(MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the optimalLWORK. she's giving workspace and she's giving numbers.LWORKβLWORKisINTEGER. The length ofWORK.LWORK >=1. For best performanceLWORK >= N*NB, whereNBis the block size returned byILAENV. IfLWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of theWORKarray, returns this value as the first entry of theWORKarray, and no error message related toLWORKis issued byXERBLA. lowkey handy. πINFOβINFOisINTEGER. Her whole mood:= 0: successful exit β¨< 0: ifINFO = -i, thei-th argument had an illegal value> 0: ifINFO = i,D(i,i)is exactly zero. The factorization has been completed, but the block diagonal matrix D is exactly singular, and division by zero will occur if it is used to solve a system of equations. β οΈ like, bestie, that is a real warning. do not ignore her.
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π Further Details: π
IfUPLO = 'U', thenA = U*D*U**T, whereU = P(n)*U(n)* ... *P(k)U(k)* ...,i.e., U is a product of termsP(k)*U(k), wherekdecreases fromnto1in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1 and 2-by-2 diagonal blocksD(k).P(k)is a permutation matrix as defined byIPIV(k), andU(k)is a unit upper triangular matrix, such that if the diagonal blockD(k)is of orders(s = 1or2), then( I v 0 ) k-s U(k) = ( 0 I 0 ) s ( 0 0 I ) n-k k-s s n-kIfs = 1,D(k)overwritesA(k,k), andvoverwritesA(1:k-1,k). Ifs = 2, the upper triangle ofD(k)overwritesA(k-1,k-1),A(k-1,k), andA(k,k), andvoverwritesA(1:k-2,k-1:k). IfUPLO = 'L', thenA = L*D*L**T, whereL = P(1)*L(1)* ... *P(k)*L(k)* ...,i.e., L is a product of termsP(k)*L(k), wherekincreases from1tonin steps of 1 or 2, and D is a block diagonal matrix with 1-by-1 and 2-by-2 diagonal blocksD(k).P(k)is a permutation matrix as defined byIPIV(k), andL(k)is a unit lower triangular matrix, such that if the diagonal blockD(k)is of orders(s = 1or2), then( I 0 0 ) k-1 L(k) = ( 0 I 0 ) s ( 0 v I ) n-k-s+1 k-1 s n-k-s+1Ifs = 1,D(k)overwritesA(k,k), andvoverwritesA(k+1:n,k). Ifs = 2, the lower triangle ofD(k)overwritesA(k,k),A(k+1,k), andA(k+1,k+1), andvoverwritesA(k+2:n,k:k+1). π§
Definition at line 181 of file csytrf.f.
π Author π
Generated automatically by Doxygen for LAPACK from the source code. she was literally born from the source, no cap.
and that's the whole page bestie π β LAPACK, Version 3.12.0, and yes the footer path is /home/abui...RC/csytrf.f(3). slay. πβ¨
π¦ where this page comes from
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms