ZGEHD2(3)
π NAME π
ok so bestie, gather round π this page is all about /home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/zgehd2.f β and it lives in the Library Functions Manual, which is where all the good stuff hangs out π«Ά
β¨ SYNOPSIS β¨
π Functions/Subroutines
subroutine ZGEHD2 (n, ilo, ihi, a, lda, tau, work, info)
ZGEHD2 reduces a general square matrix to upper Hessenberg form
using an unblocked algorithm.
π¦ Function/Subroutine Documentation π¦
so here's the whole glow-up, signature and all πΈ
subroutine ZGEHD2 (integer n, integer ilo, integer ihi, complex*16,
dimension( lda, * ) a, integer lda, complex*16, dimension( * ) tau,
complex*16, dimension( * ) work, integer info)
ZGEHD2 reduces a general square matrix to upper Hessenberg form using an unblocked algorithm. no blocking, no shortcuts, just vibes and math π
π Purpose π
!>
!> ZGEHD2 reduces a complex general matrix A to upper Hessenberg form H
!> by a unitary similarity transformation: Q**H * A * Q = H .
!>
like literally it takes your matrix and transforms it into H through Q**H * A * Q = H, iconic behavior ngl π
π§ Parameters π§
π« N
!> N is INTEGER
!> The order of the matrix A. N >= 0.
!>
the order of the matrix A, and it's gotta be N >= 0 β¨
π« ILO
!> ILO is INTEGER
!>
that's it, that's the whole description, she's mysterious π
π« IHI
!> IHI is INTEGER
!>
!> It is assumed that A is already upper triangular in rows
!> and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally
!> set by a previous call to ZGEBAL; otherwise they should be
!> set to 1 and N respectively. See Further Details.
!> 1 <= ILO <= IHI <= max(1,N).
!>
ok so heads up bestie β A is assumed to already be upper triangular in rows and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally set by a previous call to ZGEBAL; if you don't have that, set them to 1 and N respectively. See Further Details π and yeah, 1 <= ILO <= IHI <= max(1,N) fr fr
π« A
!> A is COMPLEX*16 array, dimension (LDA,N)
!> On entry, the n by n general matrix to be reduced.
!> On exit, the upper triangle and the first subdiagonal of A
!> are overwritten with the upper Hessenberg matrix H, and the
!> elements below the first subdiagonal, with the array TAU,
!> represent the unitary matrix Q as a product of elementary
!> reflectors. See Further Details.
!>
COMPLEX*16 array, dimension (LDA,N). On entry it's the n by n general matrix to be reduced π¦ on exit, the upper triangle and the first subdiagonal get overwritten with the upper Hessenberg matrix H, and the elements below the first subdiagonal β together with the array TAU β represent the unitary matrix Q as a product of elementary reflectors. See Further Details π
π« LDA
!> LDA is INTEGER
!> The leading dimension of the array A. LDA >= max(1,N).
!>
the leading dimension of the array A, and LDA >= max(1,N) β don't skip this check, she WILL notice π
π« TAU
!> TAU is COMPLEX*16 array, dimension (N-1)
!> The scalar factors of the elementary reflectors (see Further
!> Details).
!>
COMPLEX*16 array, dimension (N-1), holding the scalar factors of the elementary reflectors (see Further Details π)
π« WORK
!> WORK is COMPLEX*16 array, dimension (N)
!>
COMPLEX*16 array, dimension (N). that's it, she just works π
π« INFO
!> INFO is INTEGER
!> = 0: successful exit
!> < 0: if INFO = -i, the i-th argument had an illegal value.
!>
the receipts π = 0 means successful exit, < 0 means if INFO = -i then the i-th argument had an illegal value. so if you see a negative number, that's your sign bestie π
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
look at that squad π«Ά
π₯ Further Details: π₯
!>
!> The matrix Q is represented as a product of (ihi-ilo) elementary
!> reflectors
!>
!> Q = H(ilo) H(ilo+1) . . . H(ihi-1).
!>
!> Each H(i) has the form
!>
!> H(i) = I - tau * v * v**H
!>
!> where tau is a complex scalar, and v is a complex vector with
!> v(1:i) = 0, v(i+1) = 1 and v(ihi+1:n) = 0; v(i+2:ihi) is stored on
!> exit in A(i+2:ihi,i), and tau in TAU(i).
!>
!> The contents of A are illustrated by the following example, with
!> n = 7, ilo = 2 and ihi = 6:
!>
!> on entry, on exit,
!>
!> ( a a a a a a a ) ( a a h h h h a )
!> ( a a a a a a ) ( a h h h h a )
!> ( a a a a a a ) ( h h h h h h )
!> ( a a a a a a ) ( v2 h h h h h )
!> ( a a a a a a ) ( v2 v3 h h h h )
!> ( a a a a a a ) ( v2 v3 v4 h h h )
!> ( a ) ( a )
!>
!> where a denotes an element of the original matrix A, h denotes a
!> modified element of the upper Hessenberg matrix H, and vi denotes an
!> element of the vector defining H(i).
!>
so the tea β: Q is a product of (ihi-ilo) elementary reflectors, Q = H(ilo) H(ilo+1) . . . H(ihi-1). each H(i) looks like H(i) = I - tau * v * v**H, where tau is a complex scalar and v is a complex vector with v(1:i) = 0, v(i+1) = 1 and v(ihi+1:n) = 0; v(i+2:ihi) gets stored on exit in A(i+2:ihi,i), and tau in TAU(i) π
in the picture above, a is an element of the original matrix A, h is a modified element of the upper Hessenberg matrix H, and vi is an element of the vector defining H(i). the before/after is giving transformation arc, honestly obsessed ππ
Definition at line 148 of file zgehd2.f. π
π Author π
Generated automatically by Doxygen for LAPACK from the source code. π€ (yes the robots wrote this one, slay)
and that's the whole page bestie!! π it's LAPACK, Version 3.12.0, straight out of /home/abui...RC/zgehd2.f(3) β go forth and Hessenberg-ify responsibly πβ¨π¦
π¦ 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