SGEBRD(3)
π SGEBRD(3) β Library Functions Manual π
okay so bestie, welcome to the library functions manual for SGEBRD π this is a LAPACK joint, brought to you by the file /home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/sgebrd.f, and she is serving linear algebra realness. buckle up π¦
β¨ NAME β¨
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/sgebrd.f
likeβ¦ that's literally her. that's the whole name. the path IS the name, she's that girl π
πΈ SYNOPSIS πΈ
Functions/Subroutines
subroutine SGEBRD (m, n, a, lda, d, e, tauq, taup, work, lwork, info)
SGEBRD β yes queen, the star of the show π
π¦ Function/Subroutine Documentation π¦
subroutine SGEBRD (integer m, integer n, real, dimension( lda, * ) a,
integer lda, real, dimension( * ) d, real, dimension( * ) e, real,
dimension( * ) tauq, real, dimension( * ) taup, real, dimension( * )
work, integer lwork, integer info)
SGEBRD π
π Purpose π
okay so what does she do: SGEBRD reduces a general real M-by-N matrix A to upper or lower bidiagonal form B by an orthogonal transformation: Q**T * A * P = B. no cap, that's the whole vibe π€
If m >= n, B is upper bidiagonal; if m < n, B is lower bidiagonal. she's flexible like that π
π Parameters π
MβM is INTEGER. the number of rows in the matrix A.M >= 0. (zero rows? valid. iconic.)NβN is INTEGER. the number of columns in the matrix A.N >= 0.AβA is REAL array, dimension (LDA,N). on entry, it's the M-by-N general matrix to be reduced. on exit, it's giving transformation:- if
m >= n, the diagonal and the first superdiagonal are overwritten with the upper bidiagonal matrixB; the elements below the diagonal, with the arrayTAUQ, represent the orthogonal matrixQas a product of elementary reflectors, and the elements above the first superdiagonal, with the arrayTAUP, represent the orthogonal matrixPas a product of elementary reflectors; - if
m < n, the diagonal and the first subdiagonal are overwritten with the lower bidiagonal matrixB; the elements below the first subdiagonal, with the arrayTAUQ, represent the orthogonal matrixQas a product of elementary reflectors, and the elements above the diagonal, with the arrayTAUP, represent the orthogonal matrixPas a product of elementary reflectors. - See Further Details. π
- if
LDAβLDA is INTEGER. the leading dimension of the array A.LDA >= max(1,M). don't come in here with a bad LDA, i'm begging πDβD is REAL array, dimension (min(M,N)). the diagonal elements of the bidiagonal matrix B:D(i) = A(i,i). main diagonal energy βEβE is REAL array, dimension (min(M,N)-1). the off-diagonal elements of the bidiagonal matrix B:- if
m >= n,E(i) = A(i,i+1)fori = 1,2,...,n-1; - if
m < n,E(i) = A(i+1,i)fori = 1,2,...,m-1.
- if
TAUQβTAUQ is REAL array, dimension (min(M,N)). the scalar factors of the elementary reflectors which represent the orthogonal matrix Q. See Further Details. π«ΆTAUPβTAUP is REAL array, dimension (min(M,N)). the scalar factors of the elementary reflectors which represent the orthogonal matrix P. See Further Details. π«ΆWORKβWORK is REAL array, dimension (MAX(1,LWORK)). on exit, ifINFO = 0,WORK(1)returns the optimalLWORK. she's telling you what she needs, listen to her β¨LWORKβLWORK is INTEGER. the length of the array WORK.LWORK >= max(1,M,N). for optimum performanceLWORK >= (M+N)*NB, whereNBis the optimal blocksize.- > π¨ and listen: if
LWORK = -1, then a workspace query is assumed β the routine only calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array, and no error message related toLWORKis issued byXERBLA. so like, she's not mad, she's just asking π₯
- > π¨ and listen: if
INFOβINFO is INTEGER= 0: successful exit π< 0: ifINFO = -i, the i-th argument had an illegal value. π somebody messed up and it was NOT her.
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
the whole squad, fr fr π«Ά
π Further Details: π
The matrices Q and P are represented as products of elementary reflectors:
If m >= n,
Q = H(1) H(2) . . . H(n) and P = G(1) G(2) . . . G(n-1)
Each H(i) and G(i) has the form:
H(i) = I - tauq * v * v**T and G(i) = I - taup * u * u**T
where tauq and taup are real scalars, and v and u are real vectors; v(1:i-1) = 0, v(i) = 1, and v(i+1:m) is stored on exit in A(i+1:m,i); u(1:i) = 0, u(i+1) = 1, and u(i+2:n) is stored on exit in A(i,i+2:n); tauq is stored in TAUQ(i) and taup in TAUP(i).
If m < n,
Q = H(1) H(2) . . . H(m-1) and P = G(1) G(2) . . . G(m)
Each H(i) and G(i) has the form:
H(i) = I - tauq * v * v**T and G(i) = I - taup * u * u**T
where tauq and taup are real scalars, and v and u are real vectors; v(1:i) = 0, v(i+1) = 1, and v(i+2:m) is stored on exit in A(i+2:m,i); u(1:i-1) = 0, u(i) = 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).
The contents of A on exit are illustrated by the following examples:
m = 6 and n = 5 (m > n): m = 5 and n = 6 (m < n):
( d e u1 u1 u1 ) ( d u1 u1 u1 u1 u1 )
( v1 d e u2 u2 ) ( e d u2 u2 u2 u2 )
( v1 v2 d e u3 ) ( v1 e d u3 u3 u3 )
( v1 v2 v3 d e ) ( v1 v2 e d u4 u4 )
( v1 v2 v3 v4 d ) ( v1 v2 v3 e d u5 )
( v1 v2 v3 v4 v5 )
where d and e denote diagonal and off-diagonal elements of B, vi denotes an element of the vector defining H(i), and ui an element of the vector defining G(i). literally so aesthetic, look at that triangle of v's ππ
π Definition at line 203 of file sgebrd.f.
π Author π
Generated automatically by Doxygen for LAPACK from the source code. (yes she was built by a robot, and she ate π€β¨)
and that's the page bestie!! π sign-off time: this is LAPACK, Version 3.12.0, and the footer vibe is brought to you by /home/abui...RC/sgebrd.f(3) β mwah, ily, go reduce some matrices πππ
π¦ 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