SGEBRD(3)

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

πŸ’… 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 matrix B; the elements below the diagonal, with the array TAUQ, represent the orthogonal matrix Q as a product of elementary reflectors, and the elements above the first superdiagonal, with the array TAUP, represent the orthogonal matrix P as a product of elementary reflectors;
    • if m < n, the diagonal and the first subdiagonal are overwritten with the lower bidiagonal matrix B; the elements below the first subdiagonal, with the array TAUQ, represent the orthogonal matrix Q as a product of elementary reflectors, and the elements above the diagonal, with the array TAUP, represent the orthogonal matrix P as a product of elementary reflectors.
    • See Further Details. πŸ‘€
  • 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) for i = 1,2,...,n-1;
    • if m < n, E(i) = A(i+1,i) for i = 1,2,...,m-1.
  • 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, if INFO = 0, WORK(1) returns the optimal LWORK. 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 performance LWORK >= (M+N)*NB, where NB is 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 to LWORK is issued by XERBLA. so like, she's not mad, she's just asking πŸ”₯
  • INFO β€” INFO is INTEGER
    • = 0: successful exit πŸŽ‰
    • < 0: if INFO = -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