/home/abui...D/dlahrd.f(3)

πŸ“¦ version 3.12.0, in opensuse-leap 16.0

πŸ’… /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