/home/abui...D/dlahrd.f(3)
π
/home/abui...D/dlahrd.f(3) β Library Functions Manual β¨
okay bestie, welcome to the deprecated corner of LAPACK, where the legends live and the warnings are real π«Ά this page is from the Library Functions Manual, and it's literally all about one subroutine that ate and left crumbs. let's get into it π
β¨ NAME β¨
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/DEPRECATED/dlahrd.f
like, yes, that's the whole name, that's the full path, we don't abbreviate here, iykyk π
πΈ SYNOPSIS πΈ
Functions/Subroutines
subroutine DLAHRD (n, k, nb, a, lda, tau, t, ldt, y, ldy)
DLAHRD reduces the first nb columns of a general rectangular matrix A so that elements below the k-th subdiagonal are zero, and returns auxiliary matrices which are needed to apply the transformation to the unreduced part of A. π«
π¦ Function/Subroutine Documentation π¦
subroutine DLAHRD (integer n, integer k, integer nb, double precision, dimension( lda, * ) a, integer lda, double precision, dimension( nb ) tau, double precision, dimension( ldt, nb ) t, integer ldt, double precision, dimension( ldy, nb ) y, integer ldy)
DLAHRD reduces the first nb columns of a general rectangular matrix A so that elements below the k-th subdiagonal are zero, and returns auxiliary matrices which are needed to apply the transformation to the unreduced part of A. no cap, that's the whole vibe π
β Purpose β
!> !> This routine is deprecated and has been replaced by routine DLAHR2. !> !> DLAHRD reduces the first NB columns of a real general n-by-(n-k+1) !> matrix A so that elements below the k-th subdiagonal are zero. The !> reduction is performed by an orthogonal similarity transformation !> QT * A * Q. The routine returns the matrices V and T which determine !> Q as a block reflector I - V*T*VT, and also the matrix Y = A * V * T. !>
ok so read that first line again bestie β deprecated π she's been replaced by DLAHR2, but she's still here serving looks. iconic behavior tbh π
π Parameters π
N
!> N is INTEGER !> The order of the matrix A. !>
the big N, the order of A, she's in charge π
K
!> K is INTEGER !> The offset for the reduction. Elements below the k-th !> subdiagonal in the first NB columns are reduced to zero. !>
the offset, the vibe-setter. everything below the k-th subdiagonal in the first NB columns gets sent to zero π«‘
NB
!> NB is INTEGER !> The number of columns to be reduced. !>
how many columns are getting the reduction treatment, periodt β¨
A
!> A is DOUBLE PRECISION array, dimension (LDA,N-K+1) !> On entry, the n-by-(n-k+1) general matrix A. !> On exit, the elements on and above the k-th subdiagonal in !> the first NB columns are overwritten with the corresponding !> elements of the reduced matrix; the elements below the k-th !> subdiagonal, with the array TAU, represent the matrix Q as a !> product of elementary reflectors. The other columns of A are !> unchanged. See Further Details. !>
the main character fr fr π
on entry she's the n-by-(n-k+1) general matrix, on exit she's transformed β the stuff on and above the k-th subdiagonal in the first NB columns gets overwritten with the reduced-matrix version, and everything below the k-th subdiagonal (together with TAU) becomes the elementary-reflector representation of Q. the other columns? untouched, unbothered, thriving π see Further Details bestie.
LDA
!> LDA is INTEGER !> The leading dimension of the array A. LDA >= max(1,N). !>
the leading dimension of A, and yes: LDA >= max(1,N) π₯
TAU
!> TAU is DOUBLE PRECISION array, dimension (NB) !> The scalar factors of the elementary reflectors. See Further !> Details. !>
the scalar factors of the elementary reflectors, dimension (NB). see Further Details π
T
!> T is DOUBLE PRECISION array, dimension (LDT,NB) !> The upper triangular matrix T. !>
the upper triangular matrix T, dimension (LDT,NB), serving upper-triangular realness π
LDT
!> LDT is INTEGER !> The leading dimension of the array T. LDT >= NB. !>
leading dimension of T, and LDT >= NB no exceptions π
Y
!> Y is DOUBLE PRECISION array, dimension (LDY,NB) !> The n-by-nb matrix Y. !>
the n-by-nb matrix Y, dimension (LDY,NB). she's the auxiliary bestie π
LDY
!> LDY is INTEGER !> The leading dimension of the array Y. LDY >= N. !>
leading dimension of Y, and LDY >= N β
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
the whole academic squad showed up for this one π«Άπ
π Further Details: π
!> !> The matrix Q is represented as a product of nb elementary reflectors !> !> Q = H(1) H(2) . . . H(nb). !> !> Each H(i) has the form !> !> H(i) = I - tau * v * vT !> !> where tau is a real scalar, and v is a real vector with !> v(1:i+k-1) = 0, v(i+k) = 1; v(i+k+1:n) is stored on exit in !> A(i+k+1:n,i), and tau in TAU(i). !> !> The elements of the vectors v together form the (n-k+1)-by-nb matrix !> V which is needed, with T and Y, to apply the transformation to the !> unreduced part of the matrix, using an update of the form: !> A := (I - V*T*VT) * (A - Y*V**T). !> !> The contents of A on exit are illustrated by the following example !> with n = 7, k = 3 and nb = 2: !> !> ( a h a a a ) !> ( a h a a a ) !> ( a h a a a ) !> ( h h a a a ) !> ( v1 h a a a ) !> ( v1 v2 a a a ) !> ( v1 v2 a 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 Q is a product of nb elementary reflectors:
Q = H(1) H(2) . . . H(nb).
and each H(i) is giving:
H(i) = I - tau * v * v**T
where tau is a real scalar and v is a real vector with v(1:i+k-1) = 0, v(i+k) = 1; v(i+k+1:n) is stored on exit in A(i+k+1:n,i), and tau in TAU(i) π«
the elements of the vectors v together form the (n-k+1)-by-nb matrix V, which β along with T and Y β is needed to apply the transformation to the unreduced part of the matrix, using an update of the form:
A := (I - V*T*V**T) * (A - Y*V**T).
and the contents of A on exit are illustrated by this example with n = 7, k = 3 and nb = 2:
( a h a a a )
( a h a a a )
( a h a a a )
( h h a a a )
( v1 h a a a )
( v1 v2 a a a )
( v1 v2 a 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). literally a whole glow-up chart π
β¨
Definition at line 166 of file dlahrd.f. π
π§ Author π§
Generated automatically by Doxygen for LAPACK from the source code. (yes bestie, a robot wrote this, and she ate π€π)
and that's the tea β β LAPACK Version 3.12.0, courtesy of /home/abui...D/dlahrd.f(3). deprecated but never forgotten, mwah πππ
π¦ 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