SLATRD(3)
π
SLATRD(3): /home/abui...RC/slatrd.f(3) β Library Functions Manual π
okay bestie, welcome to the Library Functions Manual page for /home/abui...RC/slatrd.f(3). Itβs giving LAPACK auxiliary routine energy, and weβre gonna get into every detail. No skipping. π
β¨ NAME β¨
/home/abui...RC/slatrd.f
π SYNOPSIS π
π§ Functions/Subroutines π§
subroutine SLATRD (uplo, n, nb, a, lda, e, tau, w, ldw)β SLATRD reduces the first nb rows and columns of a symmetric/Hermitian matrix A to real tridiagonal form by an orthogonal similarity transformation.
π Function/Subroutine Documentation π
π¦ subroutine SLATRD π¦
subroutine SLATRD (character uplo, integer n, integer nb, real, dimension(
lda, * ) a, integer lda, real, dimension( * ) e, real, dimension( * )
tau, real, dimension( ldw, * ) w, integer ldw)
SLATRD reduces the first nb rows and columns of a symmetric/Hermitian matrix A to real tridiagonal form by an orthogonal similarity transformation.
π Purpose: π
okay so the purpose is lowkey iconic: SLATRD reduces NB rows and columns of a real symmetric matrix A to symmetric tridiagonal form by an orthogonal similarity transformation Q**T * 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', SLATRD reduces the last NB rows and columns of a matrix, of which the upper triangle is supplied; if UPLO = 'L', SLATRD reduces the first NB rows and columns of a matrix, of which the lower triangle is supplied.
This is an auxiliary routine called by SSYTRD. periodt.
π Parameters π
UPLOβUPLO is CHARACTER*1. Specifies whether the upper or lower triangular part of the symmetric matrixAis stored:= 'U': Upper triangular= 'L': Lower triangular
NβN is INTEGER. The order of the matrixA.NBβNB is INTEGER. The number of rows and columns to be reduced.AβA is REAL 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:- 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 orthogonal 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 orthogonal matrixQas a product of elementary reflectors. - See Further Details.
- if
LDAβLDA is INTEGER. The leading dimension of the arrayA.LDA >= (1,N). fr fr, do not play with this one.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 REAL 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 REAL array, dimension (LDW,NB). The n-by-nb matrixWrequired to update the unreduced part ofA. slay.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:
Q = H(n) H(n-1) . . . H(n-nb+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: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). iykyk.
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**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+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 symmetric rank-2k update of the form:
A := A - V*W**T - W*V**T.
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 197 of file slatrd.f.
π«Ά Author π«Ά
Generated automatically by Doxygen for LAPACK from the source code.
okay bestie, thatβs the whole page. Itβs LAPACK Version 3.12.0, source file /home/abui...RC/slatrd.f(3). Stay slay and keep your dimensions straight. πβ¨
π¦ 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