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 matrix A is stored:
    • = 'U': Upper triangular
    • = 'L': Lower triangular
  • N β€” INTEGER. The order of the matrix A. N >= 0.
  • A β€” COMPLEX array, dimension (LDA,N). On entry, the Hermitian matrix A. If UPLO = 'U', the leading n-by-n upper triangular part of A contains the upper triangular part of the matrix A, and the strictly lower triangular part of A is not referenced. If UPLO = 'L', the leading n-by-n lower triangular part of A contains the lower triangular part of the matrix A, and the strictly upper triangular part of A is not referenced. On exit, if UPLO = 'U', the diagonal and first superdiagonal of A are overwritten by the corresponding elements of the tridiagonal matrix T, and the elements above the first superdiagonal, with the array TAU, represent the unitary matrix Q as a product of elementary reflectors; if UPLO = 'L', the diagonal and first subdiagonal of A are overwritten by the corresponding elements of the tridiagonal matrix T, 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.
  • LDA β€” INTEGER. The leading dimension of the array A. LDA >= max(1,N).
  • D β€” REAL array, dimension (N). The diagonal elements of the tridiagonal matrix T: D(i) = A(i,i).
  • E β€” REAL array, dimension (N-1). The off-diagonal elements of the tridiagonal matrix T: E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'.
  • TAU β€” COMPLEX array, dimension (N-1). The scalar factors of the elementary reflectors (see Further Details).
  • INFO β€” INTEGER.
    • = 0: successful exit
    • < 0: if INFO = -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 matrix A is stored:
    • = 'U': Upper triangular
    • = 'L': Lower triangular
  • N β€” INTEGER. The order of the matrix A. N >= 0.
  • A β€” DOUBLE PRECISION array, dimension (LDA,N). On entry, the symmetric matrix A. If UPLO = 'U', the leading n-by-n upper triangular part of A contains the upper triangular part of the matrix A, and the strictly lower triangular part of A is not referenced. If UPLO = 'L', the leading n-by-n lower triangular part of A contains the lower triangular part of the matrix A, and the strictly upper triangular part of A is not referenced. On exit, if UPLO = 'U', the diagonal and first superdiagonal of A are overwritten by the corresponding elements of the tridiagonal matrix T, and the elements above the first superdiagonal, with the array TAU, represent the orthogonal matrix Q as a product of elementary reflectors; if UPLO = 'L', the diagonal and first subdiagonal of A are overwritten by the corresponding elements of the tridiagonal matrix T, and the elements below the first subdiagonal, with the array TAU, represent the orthogonal matrix Q as a product of elementary reflectors. See Further Details.
  • LDA β€” INTEGER. The leading dimension of the array A. LDA >= max(1,N).
  • D β€” DOUBLE PRECISION array, dimension (N). The diagonal elements of the tridiagonal matrix T: D(i) = A(i,i).
  • E β€” DOUBLE PRECISION array, dimension (N-1). The off-diagonal elements of the tridiagonal matrix T: E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'.
  • TAU β€” DOUBLE PRECISION array, dimension (N-1). The scalar factors of the elementary reflectors (see Further Details).
  • INFO β€” INTEGER.
    • = 0: successful exit
    • < 0: if INFO = -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 β€” UPLO is CHARACTER*1. It specifies whether the upper or lower triangular part of the symmetric matrix A is stored:
    • = 'U': Upper triangular
    • = 'L': Lower triangular
  • N β€” N is INTEGER. The order of the matrix A. N >= 0.
  • A β€” A is REAL array, dimension (LDA,N). On entry, the symmetric matrix A. If UPLO = 'U', the leading n-by-n upper triangular part of A contains the upper triangular part of the matrix A, and the strictly lower triangular part of A is not referenced. If UPLO = 'L', the leading n-by-n lower triangular part of A contains the lower triangular part of the matrix A, and the strictly upper triangular part of A is not referenced. On exit, if UPLO = 'U', the diagonal and first superdiagonal of A are overwritten by the corresponding elements of the tridiagonal matrix T, and the elements above the first superdiagonal, with the array TAU, represent the orthogonal matrix Q as a product of elementary reflectors; if UPLO = 'L', the diagonal and first subdiagonal of A are overwritten by the corresponding elements of the tridiagonal matrix T, and the elements below the first subdiagonal, with the array TAU, represent the orthogonal 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).
  • D β€” D is REAL array, dimension (N). The diagonal elements of the tridiagonal matrix T: D(i) = A(i,i).
  • E β€” E is REAL array, dimension (N-1). The off-diagonal elements of the tridiagonal matrix T: E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'.
  • TAU β€” TAU is REAL array, dimension (N-1). The scalar factors of the elementary reflectors (see Further Details).
  • INFO β€” INFO is INTEGER.
    • = 0: successful exit
    • < 0: if INFO = -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**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 β€” UPLO is CHARACTER*1. It specifies whether the upper or lower triangular part of the Hermitian matrix A is stored:
    • = 'U': Upper triangular
    • = 'L': Lower triangular
  • N β€” N is INTEGER. The order of the matrix A. N >= 0.
  • A β€” A is COMPLEX*16 array, dimension (LDA,N). On entry, the Hermitian matrix A. If UPLO = 'U', the leading n-by-n upper triangular part of A contains the upper triangular part of the matrix A, and the strictly lower triangular part of A is not referenced. If UPLO = 'L', the leading n-by-n lower triangular part of A contains the lower triangular part of the matrix A, and the strictly upper triangular part of A is not referenced. On exit, if UPLO = 'U', the diagonal and first superdiagonal of A are overwritten by the corresponding elements of the tridiagonal matrix T, and the elements above the first superdiagonal, with the array TAU, represent the unitary matrix Q as a product of elementary reflectors; if UPLO = 'L', the diagonal and first subdiagonal of A are overwritten by the corresponding elements of the tridiagonal matrix T, 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.
  • LDA β€” LDA is INTEGER. The leading dimension of the array A. LDA >= max(1,N).
  • D β€” D is DOUBLE PRECISION array, dimension (N). The diagonal elements of the tridiagonal matrix T: D(i) = A(i,i).
  • E β€” E is DOUBLE PRECISION array, dimension (N-1). The off-diagonal elements of the tridiagonal matrix T: E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'.
  • TAU β€” TAU is COMPLEX*16 array, dimension (N-1). The scalar factors of the elementary reflectors (see Further Details).
  • INFO β€” INFO is INTEGER.
    • = 0: successful exit
    • < 0: if INFO = -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 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