SRC/clatrd.f(3)
π SRC/clatrd.f π
okay so bestie, this is the Library Functions Manual page for SRC/clatrd.f(3) β we folded the manual name right up here at the top because main character energy. π
This whole page is about clatrd, an auxiliary LAPACK routine that does tridiagonal reduction magic. πͺ
β¨ NAME β¨
SRC/clatrd.f
πΈ SYNOPSIS πΈ
Functions/Subroutines
subroutine clatrd (uplo, n, nb, a, lda, e, tau, w, ldw)β CLATRD reduces the first nb rows and columns of a symmetric/Hermitian matrix A to real tridiagonal form by an unitary similarity transformation. π
π¦ Function/Subroutine Documentation π¦
π subroutine clatrd signature π
subroutine clatrd (character uplo, integer n, integer nb, complex,
dimension( lda, * ) a, integer lda, real, dimension( * ) e, complex,
dimension( * ) tau, complex, dimension( ldw, * ) w, integer ldw)
CLATRD reduces the first nb rows and columns of a symmetric/Hermitian matrix A to real tridiagonal form by an unitary similarity transformation. β¨
π Purpose: π
okay so the purpose is: CLATRD reduces NB rows and columns of a complex Hermitian matrix A to Hermitian tridiagonal form by a unitary similarity transformation Q**H * A * Q, and returns the matrices V and W which are needed to apply the transformation to the unreduced part of A. π«Ά
If UPLO = 'U', CLATRD reduces the last NB rows and columns of a matrix, of which the upper triangle is supplied; if UPLO = 'L', CLATRD reduces the first NB rows and columns of a matrix, of which the lower triangle is supplied. π
This is an auxiliary routine called by CHETRD. π
π Parameters π
UPLOβUPLO is CHARACTER*1; it specifies whether the upper or lower triangular part of the Hermitian matrixAis stored:= 'U': Upper triangular= 'L': Lower triangular
NβN is INTEGER; the order of the matrixA. The size. The moment. π«NBβNB is INTEGER; the number of rows and columns to be reduced.AβA is COMPLEX 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:- if
UPLO = 'U', the lastNBcolumns have been reduced to tridiagonal form, with the diagonal elements overwriting the diagonal elements ofA; the elements above the diagonal with the arrayTAU, represent the unitary matrixQas a product of elementary reflectors; - if
UPLO = 'L', the firstNBcolumns have been reduced to tridiagonal form, with the diagonal elements overwriting the diagonal elements ofA; the elements below the diagonal with the arrayTAU, represent the unitary matrixQas a product of elementary reflectors. See Further Details. π
- if
LDAβLDA is INTEGER; the leading dimension of the arrayA.LDA >= max(1,N).EβE is REAL array, dimension (N-1). IfUPLO = 'U',E(n-nb:n-1)contains the superdiagonal elements of the lastNBcolumns of the reduced matrix; ifUPLO = 'L',E(1:nb)contains the subdiagonal elements of the firstNBcolumns of the reduced matrix.TAUβTAU is COMPLEX array, dimension (N-1). The scalar factors of the elementary reflectors, stored inTAU(n-nb:n-1)ifUPLO = 'U', and inTAU(1:nb)ifUPLO = 'L'. See Further Details.WβW is COMPLEX array, dimension (LDW,NB). Then-by-nbmatrixWrequired to update the unreduced part ofA.LDWβLDW is INTEGER; the leading dimension of the arrayW.LDW >= max(1,N).
π 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, and it's giving:
Q = H(n) H(n-1) . . . H(n-nb+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:n) = 0 and v(i-1) = 1; v(1:i-1) is stored on exit in A(1:i-1,i), and tau in TAU(i-1). Iconic. β¨
If UPLO = 'L', the matrix Q is represented as a product of elementary reflectors:
Q = H(1) H(2) . . . H(nb).
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+1:n) is stored on exit in A(i+1:n,i), and tau in TAU(i).
The elements of the vectors v together form the n-by-nb matrix V which is needed, with W, to apply the transformation to the unreduced part of the matrix, using a Hermitian rank-2k update of the form:
A := A - V*W**H - W*V**H.
The contents of A on exit are illustrated by the following examples with n = 5 and nb = 2:
if UPLO = 'U': if UPLO = 'L':
( a a a v4 v5 ) ( d )
( a a v4 v5 ) ( 1 d )
( a 1 v5 ) ( v1 1 a )
( d 1 ) ( v1 v2 a a )
( d ) ( v1 v2 a a a )
where d denotes a diagonal element of the reduced matrix, a denotes an element of the original matrix that is unchanged, and vi denotes an element of the vector defining H(i). πΈ
Definition at line 198 of file clatrd.f.
π Author π
Generated automatically by Doxygen for LAPACK from the source code.
π that's the whole page, bestie! π source SRC/clatrd.f(3) β’ LAPACK Version 3.12.0 β’ the date slot isn't shown in this source footer, so no fake date energy π. Stay slay, and may your tridiagonal reductions be correct and your reflectors elementary. π«Άβ¨
π¦ 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