TESTING/EIG/zhet21.f(3)
NAME π
TESTING/EIG/zhet21.f β that's the file, bestie. Hii and welcome to TESTING/EIG/zhet21.f(3) from the Library Functions Manual β¨
SYNOPSIS π¦
Functions/Subroutines
subroutine zhet21 (itype, uplo, n, kband, a, lda, d, e, u, ldu, v, ldv,
tau, work, rwork, result)
ZHET21
Function/Subroutine Documentation π
Here's the full signature, exactly as the page gives it:
subroutine zhet21 (integer itype, character uplo, integer n, integer kband,
complex*16, dimension( lda, * ) a, integer lda, double precision,
dimension( * ) d, double precision, dimension( * ) e, complex*16,
dimension( ldu, * ) u, integer ldu, complex*16, dimension( ldv, * ) v,
integer ldv, complex*16, dimension( * ) tau, complex*16, dimension( * )
work, double precision, dimension( * ) rwork, double precision,
dimension( 2 ) result)
ZHET21
Purpose πΈ
Okay so ZHET21 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 behavior, honestly.
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 and whose scaling constants are in . We shall use the letter to refer to the product of Householder transformations (which should be equal to U). (the source text has blanks there, and I'm leaving them exactly as-is π« )
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). Slay π
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 Housholder transformations:
RESULT(1) = | A - V S V**H | / ( |A| n ulp )
3:Uexpressed both as a dense unitary matrix and as a product of Housholder transformations:
RESULT(1) = | I - U V**H | / ( n ulp )
UPLOβUPLOisCHARACTER. IfUPLO='U', the upper triangle ofAandVwill be used and the (strictly) lower triangle will not be referenced. IfUPLO='L', the lower triangle ofAandVwill be used and the (strictly) upper triangle will not be referenced.NβNisINTEGER. The size of the matrix. If it is zero,ZHET21does 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*16array, 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βDisDOUBLE PRECISIONarray, dimension(N). The diagonal of the (symmetric tri-) diagonal matrix.EβEisDOUBLE PRECISIONarray, 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*16array, 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*16array, 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. so don't panic when it moves, it's coming back π«Ά
LDVβLDVisINTEGER. The leading dimension ofV.LDVmust be at leastNand at least1.TAUβTAUisCOMPLEX*16array, 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*16array, dimension(2*N**2).RWORKβRWORKisDOUBLE PRECISIONarray, dimension(N).RESULTβRESULTisDOUBLE PRECISIONarray, 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 zhet21.f.
Author πͺ
Generated automatically by Doxygen for LAPACK from the source code.
Okay bestie, that's the whole page. The footer vibes are: LAPACK Version 3.12.0, file TESTING/EIG/zhet21.f(3) β no extra date drama, just source and version energy. Periodt πβ¨
π¦ where this page comes from
- arch rolling: lapack-doc 3.12.1-2 Β· custom
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms