ZLABRD(3)
π¦ NAME π¦
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/zlabrd.f
okay so that's literally the whole name section, bestie β this page is brought to you by the LAPACK 3.12.0 source tree and it's just showing you where the file lives. iconic of it, honestly π
β¨ SYNOPSIS β¨
Functions/Subroutines
subroutine ZLABRD (m, n, nb, a, lda, d, e, tauq, taup, x, ldx, y, ldy)
ZLABRD reduces the first nb rows and columns of a general matrix to a bidiagonal form. that's the whole vibe π
π Function/Subroutine Documentation π
subroutine ZLABRD (integer m, integer n, integer nb, complex*16, dimension(
lda, * ) a, integer lda, double precision, dimension( * ) d, double
precision, dimension( * ) e, complex*16, dimension( * ) tauq,
complex*16, dimension( * ) taup, complex*16, dimension( ldx, * ) x,
integer ldx, complex*16, dimension( ldy, * ) y, integer ldy)
ZLABRD reduces the first nb rows and columns of a general matrix to a bidiagonal form. no cap, that's the entire job description π
π«Ά Purpose
ZLABRD reduces the first NB rows and columns of a complex general m by n matrix A to upper or lower real bidiagonal form by a unitary transformation Q**H * A * P, and returns the matrices X and Y which are needed to apply the transformation to the unreduced part of A. β¨
If m >= n, A is reduced to upper bidiagonal form; if m < n, to lower bidiagonal form.
This is an auxiliary routine called by ZGEBRD β so like, it's the bestie in the background doing the real work while ZGEBRD takes the credit. we see you, ZLABRD π
πΈ Parameters πΈ
MβM is INTEGER. The number of rows in the matrix A.NβN is INTEGER. The number of columns in the matrix A.NBβNB is INTEGER. The number of leading rows and columns of A to be reduced. (so like, how much of the front of the matrix we're touching, not the whole thing)AβA is COMPLEX*16 array, dimension (LDA,N). On entry, the m by n general matrix to be reduced. On exit, the first NB rows and columns of the matrix are overwritten; the rest of the array is unchanged. π (yes bestie, it gets wrecked β read carefully:)- If
m >= n, elements on and below the diagonal in the first NB columns, with the array TAUQ, represent the unitary matrix Q as a product of elementary reflectors; and elements above the diagonal in the first NB rows, with the array TAUP, represent the unitary matrix P as a product of elementary reflectors. - If
m < n, elements below the diagonal in the first NB columns, with the array TAUQ, represent the unitary matrix Q as a product of elementary reflectors, and elements on and above the diagonal in the first NB rows, with the array TAUP, represent the unitary matrix P as a product of elementary reflectors. - See Further Details. (there's a whole diagram down there, go look π)
- If
LDAβLDA is INTEGER. The leading dimension of the array A.LDA >= max(1,M). fr fr, respect the bound or it's over for you π¨DβD is DOUBLE PRECISION array, dimension (NB). The diagonal elements of the first NB rows and columns of the reduced matrix.D(i) = A(i,i). πEβE is DOUBLE PRECISION array, dimension (NB). The off-diagonal elements of the first NB rows and columns of the reduced matrix.TAUQβTAUQ is COMPLEX*16 array, dimension (NB). The scalar factors of the elementary reflectors which represent the unitary matrix Q. See Further Details.TAUPβTAUP is COMPLEX*16 array, dimension (NB). The scalar factors of the elementary reflectors which represent the unitary matrix P. See Further Details.XβX is COMPLEX*16 array, dimension (LDX,NB). The m-by-nb matrix X required to update the unreduced part of A.LDXβLDX is INTEGER. The leading dimension of the array X.LDX >= max(1,M).YβY is COMPLEX*16 array, dimension (LDY,NB). The n-by-nb matrix Y required to update the unreduced part of A.LDYβLDY is INTEGER. The leading dimension of the array Y.LDY >= max(1,N).
π§ Author π§
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
(the whole squad, we stan a collaborative effort π«Ά)
β Further Details β
The matrices Q and P are represented as products of elementary reflectors:
Q = H(1) H(2) . . . H(nb) and P = G(1) G(2) . . . G(nb)
Each H(i) and G(i) has the form:
H(i) = I - tauq * v * v**H and G(i) = I - taup * u * u**H
where tauq and taup are complex scalars, and v and u are complex vectors. π
If m >= n, v(1:i-1) = 0, v(i) = 1, and v(i:m) is stored on exit in A(i:m,i); u(1:i) = 0, u(i+1) = 1, and u(i+1:n) is stored on exit in A(i,i+1:n); tauq is stored in TAUQ(i) and taup in TAUP(i).
If m < n, v(1:i) = 0, v(i+1) = 1, and v(i+1:m) is stored on exit in A(i+2:m,i); u(1:i-1) = 0, u(i) = 1, and u(i:n) is stored on exit in A(i,i+1:n); tauq is stored in TAUQ(i) and taup in TAUP(i).
The elements of the vectors v and u together form the m-by-nb matrix V and the nb-by-n matrix U**H which are needed, with X and Y, to apply the transformation to the unreduced part of the matrix, using a block update of the form: A := A - V*Y**H - X*U**H. π₯
The contents of A on exit are illustrated by the following examples with nb = 2:
m = 6 and n = 5 (m > n): m = 5 and n = 6 (m < n):
( 1 1 u1 u1 u1 ) ( 1 u1 u1 u1 u1 u1 )
( v1 1 1 u2 u2 ) ( 1 1 u2 u2 u2 u2 )
( v1 v2 a a a ) ( v1 1 a a a a )
( v1 v2 a a a ) ( v1 v2 a a a a )
( v1 v2 a a a ) ( v1 v2 a a a a )
( v1 v2 a a a )
where a denotes an element of the original matrix which is unchanged, vi denotes an element of the vector defining H(i), and ui an element of the vector defining G(i). β¨ (look at the little diagram, it's literally so cute and it tells you exactly what survived the reduction π¦)
Definition at line 210 of file zlabrd.f.
π Author π
Generated automatically by Doxygen for LAPACK from the source code. (yes bestie, a robot wrote this part, not a human β doxygen said "I got it" π)
β¨ and that's the page! β¨ this absolute icon of a doc came to you from LAPACK, Version 3.12.0, dated at the bottom of the original as part of the /home/abui...RC/zlabrd.f(3) footer β mwah, go reduce something bidiagonal, bestie π
ππ«Ά
π¦ 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