CHET21(3)
π chet21.f(3) β Library Functions Manual π
okay bestie, this is the chet21.f(3) page from the Library Functions Manual π
. The header path vibe is /home/abui...IG/chet21.f(3), and this whole page is about the LAPACK test file in NAME. ngl, it's lowkey giving main character energy for a test subroutine, and I'm obsessed. π¦
πΈ NAME πΈ
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/TESTING/EIG/chet21.f
β¨ SYNOPSIS β¨
Functions/Subroutines
subroutine CHET21 (itype, uplo, n, kband, a, lda, d, e, u, ldu, v, ldv,
tau, work, rwork, result)
CHET21
π Function/Subroutine Documentation π
CHET21
subroutine CHET21 (integer itype, character uplo, integer n, integer kband,
complex, dimension( lda, * ) a, integer lda, real, dimension( * ) d,
real, dimension( * ) e, complex, dimension( ldu, * ) u, integer ldu,
complex, dimension( ldv, * ) v, integer ldv, complex, dimension( * )
tau, complex, dimension( * ) work, real, dimension( * ) rwork, real,
dimension( 2 ) result)
Purpose
okay so CHET21 generally checks a decomposition of the form
A = U S U**H
where **H means conjugate transpose, A is hermitian, U is unitary, and S is diagonal (if KBAND=0) or (real) symmetric tridiagonal (if KBAND=1). iconic linear algebra behavior β¨ fr fr.
If ITYPE=1, then U is represented as a dense matrix; otherwise U is expressed as a product of Householder transformations, whose vectors are stored in the array [blank in the source] and whose scaling constants are in [blank in the source]. We shall use the letter [blank in the source] to refer to the product of Householder transformations (which should be equal to U). the source literally has blanks there, so I'm not inventing names, no cap β iykyk π«Ά
Specifically, if ITYPE=1, then:
RESULT(1) = | A - U S U**H | / ( |A| n ulp ) and
RESULT(2) = | I - U U**H | / ( n ulp )
If ITYPE=2, then:
RESULT(1) = | A - V S V**H | / ( |A| n ulp )
If ITYPE=3, then:
RESULT(1) = | I - U V**H | / ( n ulp )
For ITYPE > 1, the transformation U is expressed as a product
V = H(1)...H(n-2), where H(j) = I - tau(j) v(j) v(j)**H
and each vector v(j) has its first j elements 0 and the remaining n-j elements stored in V(j+1:n,j). math ate that π₯
Parameters
ITYPEβITYPEisINTEGER. Specifies the type of tests to be performed.1:Uexpressed as a dense unitary matrix:RESULT(1) = | A - U S U**H | / ( |A| n ulp ) and RESULT(2) = | I - U U**H | / ( n ulp )2:Uexpressed as a productVof Householder transformations:RESULT(1) = | A - V S V**H | / ( |A| n ulp )3:Uexpressed both as a dense unitary matrix and as a product of Householder transformations:RESULT(1) = | I - U V**H | / ( n ulp )
UPLOβUPLOisCHARACTER.- If
UPLO='U', the upper triangle ofAandVwill be used and the (strictly) lower triangle will not be referenced. - If
UPLO='L', the lower triangle ofAandVwill be used and the (strictly) upper triangle will not be referenced.
- If
NβNisINTEGER. The size of the matrix. If it is zero,CHET21does nothing. It must be at least zero.KBANDβKBANDisINTEGER. The bandwidth of the matrix. It may only be zero or one. If zero, thenSis diagonal, andEis not referenced. If one, thenSis symmetric tri-diagonal.AβAisCOMPLEX array, dimension (LDA, N). The original (unfactored) matrix. It is assumed to be hermitian, and only the upper (UPLO='U') or only the lower (UPLO='L') will be referenced.LDAβLDAisINTEGER. The leading dimension ofA. It must be at least1and at leastN.DβDisREAL array, dimension (N). The diagonal of the (symmetric tri-) diagonal matrix.EβEisREAL array, dimension (N-1). The off-diagonal of the (symmetric tri-) diagonal matrix.E(1)is the(1,2)and(2,1)element,E(2)is the(2,3)and(3,2)element, etc. Not referenced ifKBAND=0.UβUisCOMPLEX array, dimension (LDU, N). IfITYPE=1or3, this contains the unitary matrix in the decomposition, expressed as a dense matrix. IfITYPE=2, then it is not referenced.LDUβLDUisINTEGER. The leading dimension ofU.LDUmust be at leastNand at least1.VβVisCOMPLEX array, dimension (LDV, N). IfITYPE=2or3, the columns of this array contain the Householder vectors used to describe the unitary matrix in the decomposition. IfUPLO='L', then the vectors are in the lower triangle, ifUPLO='U', then in the upper triangle.
NOTE β IfITYPE=2or3,Vis modified and restored. The subdiagonal (ifUPLO='L') or the superdiagonal (ifUPLO='U') is set to one, and later reset to its original value, during the course of the calculation. IfITYPE=1, then it is neither referenced nor modified. π
LDVβLDVisINTEGER. The leading dimension ofV.LDVmust be at leastNand at least1.TAUβTAUisCOMPLEX array, dimension (N). IfITYPE >= 2, thenTAU(j)is the scalar factor ofv(j) v(j)**Hin the Householder transformationH(j)of the productU = H(1)...H(n-2). IfITYPE < 2, thenTAUis not referenced.WORKβWORKisCOMPLEX array, dimension (2*N**2).RWORKβRWORKisREAL array, dimension (N).RESULTβRESULTisREAL array, dimension (2). The values computed by the two tests described above. The values are currently limited to1/ulp, to avoid overflow.RESULT(1)is always modified.RESULT(2)is modified only ifITYPE=1.
Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line 212 of file chet21.f.
π«Ά Author π«Ά
Generated automatically by Doxygen for LAPACK from the source code.
okay that's the whole page, bestie. Cute footer sign-off: LAPACK, Version 3.12.0, with footer path /home/abui...IG/chet21.f(3). the source didn't give a date, so I'm not making one up, periodt π«Άβ¨π
π¦ 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