CGEBRD(3)
π CGEBRD(3) β Library Functions Manual π
πΈ NAME πΈ
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/cgebrd.f β bestie, this is the source file for the CGEBRD routine. That's the name section, and yes it's a whole path; LAPACK said "be specific" and meant it, fr fr.
β¨ SYNOPSIS β¨
π Functions/Subroutines π
subroutine CGEBRD (m, n, a, lda, d, e, tauq, taup, work, lwork, info)
CGEBRD is the function/subroutine in question. Main character energy, iykyk. π
π¦ Function/Subroutine Documentation π¦
subroutine CGEBRD (integer m, integer n, complex, dimension( lda, * ) a,
integer lda, real, dimension( * ) d, real, dimension( * ) e, complex,
dimension( * ) tauq, complex, dimension( * ) taup, complex, dimension( *
) work, integer lwork, integer info)
CGEBRD β the full signature, exactly as listed. No cap. β¨
π― Purpose π―
CGEBRD reduces a general complexM-by-NmatrixAto upper or lower bidiagonal formBby a unitary transformation:Q**H * A * P = B.
If m >= n, B is upper bidiagonal; if m < n, B is lower bidiagonal. That's the whole point, and it ate. Periodt. π
π₯
πΈ Parameters πΈ
MβINTEGER. The number of rows in the matrixA.M >= 0.NβINTEGER. The number of columns in the matrixA.N >= 0.AβCOMPLEX array, dimension (LDA,N). On entry, theM-by-Ngeneral matrix to be reduced. On exit:- 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 unitary matrixQas a product of elementary reflectors, and the elements above the first superdiagonal, with the arrayTAUP, represent the unitary 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 unitary matrixQas a product of elementary reflectors, and the elements above the diagonal, with the arrayTAUP, represent the unitary matrixPas a product of elementary reflectors. - See Further Details.
- if
LDAβINTEGER. The leading dimension of the arrayA.LDA >= max(1,M).DβREAL array, dimension (min(M,N)). The diagonal elements of the bidiagonal matrixB:D(i) = A(i,i).EβREAL array, dimension (min(M,N)-1). The off-diagonal elements of the bidiagonal matrixB:- 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.
- if
TAUQβCOMPLEX array, dimension (min(M,N)). The scalar factors of the elementary reflectors which represent the unitary matrixQ. See Further Details.TAUPβCOMPLEX array, dimension (min(M,N)). The scalar factors of the elementary reflectors which represent the unitary matrixP. See Further Details.WORKβCOMPLEX array, dimension (MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the optimalLWORK.LWORKβINTEGER. The length of the arrayWORK.LWORK >= max(1,M,N). For optimum performanceLWORK >= (M+N)*NB, whereNBis the optimal blocksize.
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.
INFOβINTEGER.= 0: successful exit.< 0: ifINFO = -i, thei-th argument had an illegal value.
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π₯ 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**H and G(i) = I - taup * u * u**H
where tauq and taup are complex scalars, and v and u are complex 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**H and G(i) = I - taup * u * u**H
where tauq and taup are complex scalars, and v and u are complex 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).
Definition at line 204 of file cgebrd.f.
πͺ Author πͺ
Generated automatically by Doxygen for LAPACK from the source code.
Okay that's the whole page, bestie. Footer tea: LAPACK Version 3.12.0, page file /home/abui...RC/cgebrd.f(3). Go reduce something gorgeous. πβ¨
π¦ 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