hetd2(3)
π hetd2(3) Β· Library Functions Manual π
okay bestie, welcome to hetd2(3) β the page for the {he,sy}td2 family, aka reduction to tridiagonal, level 2. β¨ No cap, this is the unblocked-algorithm corner of the universe, and we're keeping every single detail. π«Ά
π NAME π
hetd2 β {he,sy}td2: reduction to tridiagonal, level 2
β¨ SYNOPSIS β¨
π§ Functions
subroutine chetd2 (uplo, n, a, lda, d, e, tau, info)β CHETD2 reduces a Hermitian matrix to real symmetric tridiagonal form by an unitary similarity transformation (unblocked algorithm).subroutine dsytd2 (uplo, n, a, lda, d, e, tau, info)β DSYTD2 reduces a symmetric matrix to real symmetric tridiagonal form by an orthogonal similarity transformation (unblocked algorithm).subroutine ssytd2 (uplo, n, a, lda, d, e, tau, info)β SSYTD2 reduces a symmetric matrix to real symmetric tridiagonal form by an orthogonal similarity transformation (unblocked algorithm).subroutine zhetd2 (uplo, n, a, lda, d, e, tau, info)β ZHETD2 reduces a Hermitian matrix to real symmetric tridiagonal form by an unitary similarity transformation (unblocked algorithm).
πΈ Detailed Description πΈ
The function docs are right below, bestie. π
π¦ Function Documentation π¦
π subroutine chetd2 (...)
subroutine chetd2 (character uplo, integer n, complex, dimension( lda, * ) a, integer lda, real, dimension( * ) d, real, dimension( * ) e, complex, dimension( * ) tau, integer info)
CHETD2 reduces a Hermitian matrix to real symmetric tridiagonal form by an unitary similarity transformation (unblocked algorithm).
β¨ Purpose
CHETD2 reduces a complex Hermitian matrix A to real symmetric tridiagonal form T by a unitary similarity transformation:
Q**H * A * Q = T.
π― Parameters
UPLOβCHARACTER*1. Specifies whether the upper or lower triangular part of the Hermitian matrixAis stored:= 'U': Upper triangular= 'L': Lower triangular
NβINTEGER. The order of the matrixA.N >= 0.AβCOMPLEX array, dimension (LDA,N). On entry, the Hermitian matrixA. IfUPLO = 'U', the leading n-by-n upper triangular part ofAcontains the upper triangular part of the matrixA, and the strictly lower triangular part ofAis not referenced. IfUPLO = 'L', the leading n-by-n lower triangular part ofAcontains the lower triangular part of the matrixA, and the strictly upper triangular part ofAis not referenced. On exit, ifUPLO = 'U', the diagonal and first superdiagonal ofAare overwritten by the corresponding elements of the tridiagonal matrixT, and the elements above the first superdiagonal, with the arrayTAU, represent the unitary matrixQas a product of elementary reflectors; ifUPLO = 'L', the diagonal and first subdiagonal ofAare overwritten by the corresponding elements of the tridiagonal matrixT, and the elements below the first subdiagonal, with the arrayTAU, represent the unitary matrixQas a product of elementary reflectors. See Further Details.LDAβINTEGER. The leading dimension of the arrayA.LDA >= max(1,N).DβREAL array, dimension (N). The diagonal elements of the tridiagonal matrixT:D(i) = A(i,i).EβREAL array, dimension (N-1). The off-diagonal elements of the tridiagonal matrixT:E(i) = A(i,i+1)ifUPLO = 'U',E(i) = A(i+1,i)ifUPLO = 'L'.TAUβCOMPLEX array, dimension (N-1). The scalar factors of the elementary reflectors (see Further Details).INFOβINTEGER.= 0: successful exit< 0: ifINFO = -i, the i-th argument had an illegal value.
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π Further Details
If UPLO = 'U', the matrix Q is represented as a product of elementary reflectors:
Q = H(n-1) . . . H(2) H(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(i+1:n) = 0 and v(i) = 1; v(1:i-1) is stored on exit in A(1:i-1,i+1), and tau in TAU(i).
If UPLO = 'L', the matrix Q is represented as a product of elementary reflectors:
Q = H(1) H(2) . . . H(n-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 and v(i+1) = 1; v(i+2:n) is stored on exit in A(i+2:n,i), and tau in TAU(i).
The contents of A on exit are illustrated by the following examples with n = 5:
if UPLO = 'U': if UPLO = 'L':
( d e v2 v3 v4 ) ( d )
( d e v3 v4 ) ( e d )
( d e v4 ) ( v1 e d )
( d e ) ( v1 v2 e d )
( d ) ( v1 v2 v3 e d )
where d and e denote diagonal and off-diagonal elements of T, and vi denotes an element of the vector defining H(i).
Definition at line 174 of file chetd2.f.
π subroutine dsytd2 (...)
subroutine dsytd2 (character uplo, integer n, double precision, dimension( lda, * ) a, integer lda, double precision, dimension( * ) d, double precision, dimension( * ) e, double precision, dimension( * ) tau, integer info)
DSYTD2 reduces a symmetric matrix to real symmetric tridiagonal form by an orthogonal similarity transformation (unblocked algorithm).
β¨ Purpose
DSYTD2 reduces a real symmetric matrix A to symmetric tridiagonal form T by an orthogonal similarity transformation:
Q**T * A * Q = T.
π― Parameters
UPLOβCHARACTER*1. Specifies whether the upper or lower triangular part of the symmetric matrixAis stored:= 'U': Upper triangular= 'L': Lower triangular
NβINTEGER. The order of the matrixA.N >= 0.AβDOUBLE PRECISION array, dimension (LDA,N). On entry, the symmetric matrixA. IfUPLO = 'U', the leading n-by-n upper triangular part ofAcontains the upper triangular part of the matrixA, and the strictly lower triangular part ofAis not referenced. IfUPLO = 'L', the leading n-by-n lower triangular part ofAcontains the lower triangular part of the matrixA, and the strictly upper triangular part ofAis not referenced. On exit, ifUPLO = 'U', the diagonal and first superdiagonal ofAare overwritten by the corresponding elements of the tridiagonal matrixT, and the elements above the first superdiagonal, with the arrayTAU, represent the orthogonal matrixQas a product of elementary reflectors; ifUPLO = 'L', the diagonal and first subdiagonal ofAare overwritten by the corresponding elements of the tridiagonal matrixT, and the elements below the first subdiagonal, with the arrayTAU, represent the orthogonal matrixQas a product of elementary reflectors. See Further Details.LDAβINTEGER. The leading dimension of the arrayA.LDA >= max(1,N).DβDOUBLE PRECISION array, dimension (N). The diagonal elements of the tridiagonal matrixT:D(i) = A(i,i).EβDOUBLE PRECISION array, dimension (N-1). The off-diagonal elements of the tridiagonal matrixT:E(i) = A(i,i+1)ifUPLO = 'U',E(i) = A(i+1,i)ifUPLO = 'L'.TAUβDOUBLE PRECISION array, dimension (N-1). The scalar factors of the elementary reflectors (see Further Details).INFOβINTEGER.= 0: successful exit< 0: ifINFO = -i, the i-th argument had an illegal value.
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π Further Details
okay so back to the dsytd2 further-details tea β β no scrolling required, bestie, weβre picking up exactly where we left off.
If UPLO = 'U', the matrix Q is represented as a product of elementary reflectors:
Q = H(n-1) . . . H(2) H(1).
Each H(i) has the form
H(i) = I - tau * v * v**T
where tau is a real scalar, and v is a real vector with
v(i+1:n) = 0 and v(i) = 1; v(1:i-1) is stored on exit in
A(1:i-1,i+1), and tau in TAU(i).
If UPLO = 'L', the matrix Q is represented as a product of elementary reflectors:
Q = H(1) H(2) . . . H(n-1).
Each H(i) has the form
H(i) = I - tau * v * v**T
where tau is a real scalar, and v is a real vector with
v(1:i) = 0 and v(i+1) = 1; v(i+2:n) is stored on exit in A(i+2:n,i),
and tau in TAU(i).
The contents of A on exit are illustrated by the following examples with n = 5:
if UPLO = 'U': if UPLO = 'L':
( d e v2 v3 v4 ) ( d )
( d e v3 v4 ) ( e d )
( d e v4 ) ( v1 e d )
( d e ) ( v1 v2 e d )
( d ) ( v1 v2 v3 e d )
where d and e denote diagonal and off-diagonal elements of T, and vi denotes an element of the vector defining H(i).
Definition at line 172 of file dsytd2.f.
π ssytd2 β the real symmetric glow-up
subroutine ssytd2 (character uplo, integer n, real, dimension( lda, * ) a,
integer lda, real, dimension( * ) d, real, dimension( * ) e, real,
dimension( * ) tau, integer info)
SSYTD2 reduces a symmetric matrix to real symmetric tridiagonal form by an orthogonal similarity transformation (unblocked algorithm).
Purpose
SSYTD2 reduces a real symmetric matrix A to symmetric tridiagonal form T by an orthogonal similarity transformation: Q**T * A * Q = T.
Parameters
UPLOβUPLOisCHARACTER*1. It specifies whether the upper or lower triangular part of the symmetric matrixAis stored:= 'U': Upper triangular= 'L': Lower triangular
NβNisINTEGER. The order of the matrixA.N >= 0.AβAisREAL array, dimension (LDA,N). On entry, the symmetric matrixA. IfUPLO = 'U', the leadingn-by-nupper triangular part ofAcontains the upper triangular part of the matrixA, and the strictly lower triangular part ofAis not referenced. IfUPLO = 'L', the leadingn-by-nlower triangular part ofAcontains the lower triangular part of the matrixA, and the strictly upper triangular part ofAis not referenced. On exit, ifUPLO = 'U', the diagonal and first superdiagonal ofAare overwritten by the corresponding elements of the tridiagonal matrixT, and the elements above the first superdiagonal, with the arrayTAU, represent the orthogonal matrixQas a product of elementary reflectors; ifUPLO = 'L', the diagonal and first subdiagonal ofAare overwritten by the corresponding elements of the tridiagonal matrixT, and the elements below the first subdiagonal, with the arrayTAU, represent the orthogonal matrixQas a product of elementary reflectors. See Further Details.LDAβLDAisINTEGER. The leading dimension of the arrayA.LDA >= max(1,N).DβDisREAL array, dimension (N). The diagonal elements of the tridiagonal matrixT:D(i) = A(i,i).EβEisREAL array, dimension (N-1). The off-diagonal elements of the tridiagonal matrixT:E(i) = A(i,i+1)ifUPLO = 'U',E(i) = A(i+1,i)ifUPLO = 'L'.TAUβTAUisREAL array, dimension (N-1). The scalar factors of the elementary reflectors (see Further Details).INFOβINFOisINTEGER.= 0: successful exit< 0: ifINFO = -i, thei-th argument had an illegal value.
Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Further Details:
If UPLO = 'U', the matrix Q is represented as a product of elementary reflectors:
Q = H(n-1) . . . H(2) H(1).
Each H(i) has the form
H(i) = I - tau * v * v**T
where tau is a real scalar, and v is a real vector with
v(i+1:n) = 0 and v(i) = 1; v(1:i-1) is stored on exit in
A(1:i-1,i+1), and tau in TAU(i).
If UPLO = 'L', the matrix Q is represented as a product of elementary reflectors:
Q = H(1) H(2) . . . H(n-1).
Each H(i) has the form
H(i) = I - tau * v * v**T
where tau is a real scalar, and v is a real vector with
v(1:i) = 0 and v(i+1) = 1; v(i+2:n) is stored on exit in A(i+2:n,i),
and tau in TAU(i).
The contents of A on exit are illustrated by the following examples with n = 5:
if UPLO = 'U': if UPLO = 'L':
( d e v2 v3 v4 ) ( d )
( d e v3 v4 ) ( e d )
( d e v4 ) ( v1 e d )
( d e ) ( v1 v2 e d )
( d ) ( v1 v2 v3 e d )
where d and e denote diagonal and off-diagonal elements of T, and vi denotes an element of the vector defining H(i).
Definition at line 172 of file ssytd2.f.
π¦ zhetd2 β Hermitian but make it tridiagonal
subroutine zhetd2 (character uplo, integer n, complex*16, dimension( lda, *
) a, integer lda, double precision, dimension( * ) d, double precision,
dimension( * ) e, complex*16, dimension( * ) tau, integer info)
ZHETD2 reduces a Hermitian matrix to real symmetric tridiagonal form by an unitary similarity transformation (unblocked algorithm).
Purpose
ZHETD2 reduces a complex Hermitian matrix A to real symmetric tridiagonal form T by a unitary similarity transformation: Q**H * A * Q = T.
Parameters
UPLOβUPLOisCHARACTER*1. It specifies whether the upper or lower triangular part of the Hermitian matrixAis stored:= 'U': Upper triangular= 'L': Lower triangular
NβNisINTEGER. The order of the matrixA.N >= 0.AβAisCOMPLEX*16 array, dimension (LDA,N). On entry, the Hermitian matrixA. IfUPLO = 'U', the leadingn-by-nupper triangular part ofAcontains the upper triangular part of the matrixA, and the strictly lower triangular part ofAis not referenced. IfUPLO = 'L', the leadingn-by-nlower triangular part ofAcontains the lower triangular part of the matrixA, and the strictly upper triangular part ofAis not referenced. On exit, ifUPLO = 'U', the diagonal and first superdiagonal ofAare overwritten by the corresponding elements of the tridiagonal matrixT, and the elements above the first superdiagonal, with the arrayTAU, represent the unitary matrixQas a product of elementary reflectors; ifUPLO = 'L', the diagonal and first subdiagonal ofAare overwritten by the corresponding elements of the tridiagonal matrixT, and the elements below the first subdiagonal, with the arrayTAU, represent the unitary matrixQas a product of elementary reflectors. See Further Details.LDAβLDAisINTEGER. The leading dimension of the arrayA.LDA >= max(1,N).DβDisDOUBLE PRECISION array, dimension (N). The diagonal elements of the tridiagonal matrixT:D(i) = A(i,i).EβEisDOUBLE PRECISION array, dimension (N-1). The off-diagonal elements of the tridiagonal matrixT:E(i) = A(i,i+1)ifUPLO = 'U',E(i) = A(i+1,i)ifUPLO = 'L'.TAUβTAUisCOMPLEX*16 array, dimension (N-1). The scalar factors of the elementary reflectors (see Further Details).INFOβINFOisINTEGER.= 0: successful exit< 0: ifINFO = -i, thei-th argument had an illegal value.
Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Further Details:
okay so here's where we get into the actual shape of Q, and honestly bestie, this is the part that makes it click. π
If UPLO = 'U', the matrix Q is represented as a product of elementary reflectors:
Q = H(n-1) . . . H(2) H(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(i+1:n) = 0 and v(i) = 1; v(1:i-1) is stored on exit in A(1:i-1,i+1), and tau in TAU(i).
and now the lowercase flip β¨
If UPLO = 'L', the matrix Q is represented as a product of elementary reflectors:
Q = H(1) H(2) . . . H(n-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 and v(i+1) = 1; v(i+2:n) is stored on exit in A(i+2:n,i), and tau in TAU(i).
literally the only difference between the two is which end of the vector gets zeroed and which way the index math veers π do NOT mix them up
the vibe check on A when you're done π«Ά β the contents of A on exit are illustrated by the following examples with n = 5:
if UPLO = 'U': if UPLO = 'L':
( d e v2 v3 v4 ) ( d )
( d e v3 v4 ) ( e d )
( d e v4 ) ( v1 e d )
( d e ) ( v1 v2 e d )
( d ) ( v1 v2 v3 e d )
where d and e denote diagonal and off-diagonal elements of T, and vi denotes an element of the vector defining H(i).
notice how the upper one is all packed up top and the lower one is all packed down below?? it's giving mirror selfie energy π
the vs live in exactly the triangle you'd expect, no cap
Definition at line 174 of file zhetd2.f.
πΈ Author πΈ
Generated automatically by Doxygen for LAPACK from the source code. (so likeβ¦ a robot wrote this, and I just gave it a personality π slay)
and that's a wrap on hetd2(3), bestie β you made it to the end π stay safe in the triangles, don't touch the deprecated stuff, and remember: this icon of a page is LAPACK Version 3.12.0, page hetd2(3). mwah π
π¦ 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