SRC/dgbbrd.f(3)
β¨ SRC/dgbbrd.f β¨
okay bestie, buckle up π this is the manual page for SRC/dgbbrd.f β and yes, it's giving linear algebra icon energy. the way this routine just reduces a band matrix like it's nothing? obsessed. π
πΈ SYNOPSIS πΈ
π¦ Functions/Subroutines
subroutine dgbbrd (vect, m, n, ncc, kl, ku, ab, ldab, d, e, q, ldq, pt, ldpt, c, ldc, work, info)β literally the whole glow-up, DGBBRD π
π Function/Subroutine Documentation
subroutine dgbbrd (character vect, integer m, integer n, integer ncc,
integer kl, integer ku, double precision, dimension( ldab, * ) ab,
integer ldab, double precision, dimension( * ) d, double precision,
dimension( * ) e, double precision, dimension( ldq, * ) q, integer ldq,
double precision, dimension( ldpt, * ) pt, integer ldpt, double
precision, dimension( ldc, * ) c, integer ldc, double precision,
dimension( * ) work, integer info)
DGBBRD π
π PURPOSE π
!>DGBBRD reduces a real general m-by-n band matrix A to upper!>bidiagonal form B by an orthogonal transformation: Q**T * A * P = B.!>The routine computes B, and optionally forms Q or P**T, or computes!>Q**T*C for a given matrix C.
so basically it takes your whole band matrix situation and transforms it into upper bidiagonal form β main character energy fr fr. it computes B, and if you're feeling fancy you can also get it to form Q or P**T for you, or even compute Q**T*C for some matrix C you brought along. no cap, that's a lot of utility in one subroutine. π₯
π PARAMETERS π
π VECT
!>VECT isCHARACTER*1!>Specifies whether or not the matrices Q and P**T are to be!>formed.!>='N': do not form Q or P**T;!>='Q': form Q only;!>='P': form P**T only;!>='B': form both.
okay so this is the vibe-check parameter β it decides whether you want Q, P**T, both, or honestly neither (lowkey valid). π«Ά
'N'β do not form Q or P**T, we're keeping it minimal'Q'β form Q only, just the one icon'P'β form P**T only, a solo moment'B'β form both, because why not have it all π
π M
!>M isINTEGER!>The number of rows of the matrix A. M >= 0.
the row count, bestie. M >= 0. periodt.
π§ N
!>N isINTEGER!>The number of columns of the matrix A. N >= 0.
the column count. N >= 0. that's it, that's the girl. β¨
πΈ NCC
!>NCC isINTEGER!>The number of columns of the matrix C. NCC >= 0.
how many columns matrix C is serving. NCC >= 0.
π KL
!>KL isINTEGER!>The number of subdiagonals of the matrix A. KL >= 0.
the subdiagonal count β the stuff hanging below the main diagonal. KL >= 0.
β KU
!>KU isINTEGER!>The number of superdiagonals of the matrix A. KU >= 0.
the superdiagonal count β the stuff floating above. KU >= 0.
π¦ AB
!>AB isDOUBLE PRECISIONarray, dimension (LDAB,N)!>On entry, the m-by-n band matrix A, stored in rows 1 to!>KL+KU+1. The j-th column of A is stored in the j-th column of!>the array AB as follows:!>AB(ku+1+i-j,j) = A(i,j) for max(1,j-ku)<=i<=min(m,j+kl).!>On exit, A is overwritten by values generated during the!>reduction.
this is where your band matrix A lives, stored in rows 1 to KL+KU+1. mapping is:
AB(ku+1+i-j,j) = A(i,j) for max(1,j-ku)<=i<=min(m,j+kl).
and heads up β on exit, A gets overwritten by the values generated during the reduction. not me warning you that your original data is gone π it's fine it's fine, that's just how it is.
π LDAB
!>LDAB isINTEGER!>The leading dimension of the array A. LDAB >= KL+KU+1.
the leading dimension of the array A. rule is LDAB >= KL+KU+1. iconic constraint, don't ignore it.
π D
!>D isDOUBLE PRECISIONarray, dimension (min(M,N))!>The diagonal elements of the bidiagonal matrix B.
the diagonal elements of B β the actual main characters of the bidiagonal result. dimension is min(M,N).
πΈ E
!>E isDOUBLE PRECISIONarray, dimension (min(M,N)-1)!>The superdiagonal elements of the bidiagonal matrix B.
the superdiagonal elements of B. dimension is min(M,N)-1 β yes it's one shorter, that's not a typo, that's just math bestie.
π Q
!>Q isDOUBLE PRECISIONarray, dimension (LDQ,M)!>If VECT ='Q'or'B', the m-by-m orthogonal matrix Q.!>If VECT ='N'or'P', the array Q is not referenced.
the m-by-m orthogonal matrix Q β but only if VECT = 'Q' or 'B'. if VECT = 'N' or 'P', Q is simply not referenced. ignore her, she's not on stage rn. π
π«Ά LDQ
!>LDQ isINTEGER!>The leading dimension of the array Q.!>LDQ >= max(1,M) if VECT ='Q'or'B'; LDQ >= 1 otherwise.
rules: LDQ >= max(1,M) if VECT = 'Q' or 'B'; otherwise LDQ >= 1.
π₯ PT
!>PT isDOUBLE PRECISIONarray, dimension (LDPT,N)!>If VECT ='P'or'B', the n-by-n orthogonal matrix P'.!>If VECT ='N'or'Q', the array PT is not referenced.
PT holds the n-by-n orthogonal matrix P' when VECT = 'P' or 'B'. if VECT = 'N' or 'Q', PT is not referenced β again, off duty. π
π§ LDPT
!>LDPT isINTEGER!>The leading dimension of the array PT.!>LDPT >= max(1,N) if VECT ='P'or'B'; LDPT >= 1 otherwise.
rules: LDPT >= max(1,N) if VECT = 'P' or 'B'; otherwise LDPT >= 1.
π C
!>C isDOUBLE PRECISIONarray, dimension (LDC,NCC)!>On entry, an m-by-ncc matrix C.!>On exit, C is overwritten by Q**T*C.!>C is not referenced if NCC = 0.
on entry it's your m-by-ncc matrix C, and on exit it gets overwritten by Q**T*C. if NCC = 0, C isn't referenced at all. so if you didn't bring a C, nobody's mad. β¨
β LDC
!>LDC isINTEGER!>The leading dimension of the array C.!>LDC >= max(1,M) if NCC > 0; LDC >= 1 if NCC = 0.
rules: LDC >= max(1,M) if NCC > 0; LDC >= 1 if NCC = 0.
π¦ WORK
!>WORK isDOUBLE PRECISIONarray, dimension (2*max(M,N))
scratch workspace, dimension 2*max(M,N). it's giving backstage crew energy β you don't see it but the whole show doesn't happen without it. π«Ά
π INFO
!>INFO isINTEGER!>= 0: successful exit.!>< 0: if INFO = -i, the i-th argument had an illegal value.
the receipts:
0β successful exit, we ate and left no crumbs π< 0β ifINFO = -i, the i-th argument had an illegal value. not me checking my inputs π
π AUTHOR π
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
π Definition at line 185 of file dgbbrd.f.
π Author π
Generated automatically by Doxygen for LAPACK from the source code.
okay that's the whole page bestie, you're now fluent in DGBBRD π¦π slay, go reduce some matrices. periodt. πΈ
LAPACK Β· Version 3.12.0 Β· xoxo, SRC/dgbbrd.f(3) β she ate and left no crumbs ππ
π¦ where this page comes from
- arch rolling: lapack-doc 3.12.1-2 Β· custom
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms