TESTING/EIG/sget22.f(3)
π TESTING/EIG/sget22.f π
okay bestie, this is the Library Functions Manual entry for TESTING/EIG/sget22.f β tiny Fortran file, huge eigenvector-check energy β¨
π NAME π
TESTING/EIG/sget22.f
β¨ SYNOPSIS β¨
Functions/Subroutines
subroutine sget22 (transa, transe, transw, n, a, lda, e, lde, wr, wi,
work, result)
SGET22
π Function/Subroutine Documentation π
subroutine sget22 (character transa, character transe, character transw,
integer n, real, dimension( lda, * ) a, integer lda, real, dimension(
lde, * ) e, integer lde, real, dimension( * ) wr, real, dimension( * )
wi, real, dimension( * ) work, real, dimension( 2 ) result)
SGET22
Purpose β¨
okay so SGET22 does an eigenvector check. no cap, that's the whole vibe check.
The basic test is:
RESULT(1) = | A E - E W | / ( |A| |E| ulp )
using the 1-norm. It also tests the normalization of E:
RESULT(2) = max | m-norm(E(j)) - 1 | / ( n ulp )
j
where E(j) is the j-th eigenvector, and m-norm is the max-norm of a vector. If an eigenvector is complex, as determined from WI(j) nonzero, then the max-norm of the vector ( er + i*ei ) is the maximum of
|er(1)| + |ei(1)|, ... , |er(n)| + |ei(n)|
W is a block diagonal matrix, with a 1 by 1 block for each real eigenvalue and a 2 by 2 block for each complex conjugate pair. If eigenvalues j and j+1 are a complex conjugate pair, so that WR(j) = WR(j+1) = wr and WI(j) = - WI(j+1) = wi, then the 2 by 2 block corresponding to the pair will be:
( wr wi )
( -wi wr )
Such a block multiplying an n by 2 matrix ( ur ui ) on the right will be the same as multiplying ur + i*ui by wr + i*wi.
To handle various schemes for storage of left eigenvectors, there are options to use A-transpose instead of A, E-transpose instead of E, and/or W-transpose instead of W.
Parameters π
TRANSA
TRANSA is CHARACTER*1 β specifies whether or not A is transposed.
= 'N': No transpose= 'T': Transpose= 'C': Conjugate transpose (= Transpose)
TRANSE
TRANSE is CHARACTER*1 β specifies whether or not E is transposed.
= 'N': No transpose, eigenvectors are in columns of E= 'T': Transpose, eigenvectors are in rows of E= 'C': Conjugate transpose (= Transpose)
TRANSW
TRANSW is CHARACTER*1 β specifies whether or not W is transposed.
= 'N': No transpose= 'T': Transpose, use-WI(j)instead ofWI(j)= 'C': Conjugate transpose, use-WI(j)instead ofWI(j)
N
N is INTEGER β the order of the matrix A. N >= 0.
A
A is REAL array, dimension (LDA,N) β the matrix whose eigenvectors are in E.
LDA
LDA is INTEGER β the leading dimension of the array A. LDA >= max(1,N).
E
E is REAL array, dimension (LDE,N) β the matrix of eigenvectors. If TRANSE = 'N', the eigenvectors are stored in the columns of E, if TRANSE = 'T' or 'C', the eigenvectors are stored in the rows of E.
LDE
LDE is INTEGER β the leading dimension of the array E. LDE >= max(1,N).
WR
WR is REAL array, dimension (N).
WI
WI is REAL array, dimension (N) β the real and imaginary parts of the eigenvalues of A. Purely real eigenvalues are indicated by WI(j) = 0. Complex conjugate pairs are indicated by WR(j)=WR(j+1) and WI(j) = - WI(j+1) non-zero; the real part is assumed to be stored in the j-th row/column and the imaginary part in the (j+1)-th row/column.
WORK
WORK is REAL array, dimension (N*(N+1)).
RESULT
RESULT is REAL array, dimension (2).
RESULT(1) = | A E - E W | / ( |A| |E| ulp )
RESULT(2) = max | m-norm(E(j)) - 1 | / ( n ulp )
j
Author πΈ
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line 166 of file sget22.f.
Author (auto-generated) π«Ά
Generated automatically by Doxygen for LAPACK from the source code.
okay that's the whole page, bestie β sourced from LAPACK Version 3.12.0 for TESTING/EIG/sget22.f(3), no date on this footer, just vibes πβ¨
π¦ 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