gbbrd(3)

🌸 NAME 🌸

gbbrd β€” the manual literally calls it gbbrd: band to bidiagonal, and honestly? That's the whole pitch. Band matrix in, bidiagonal out, main character energy the entire time. πŸ’…


✨ SYNOPSIS ✨

🌈 Functions

Four flavors, one vibe β€” pick your precision bestie:

subroutine cgbbrd (vect, m, n, ncc, kl, ku, ab, ldab, d, e, q, ldq, pt, ldpt, c, ldc, work, rwork, info)
subroutine dgbbrd (vect, m, n, ncc, kl, ku, ab, ldab, d, e, q, ldq, pt, ldpt, c, ldc, work, info)
subroutine sgbbrd (vect, m, n, ncc, kl, ku, ab, ldab, d, e, q, ldq, pt, ldpt, c, ldc, work, info)
subroutine zgbbrd (vect, m, n, ncc, kl, ku, ab, ldab, d, e, q, ldq, pt, ldpt, c, ldc, work, rwork, info)

And those map, one-to-one, to the four documented routines: CGBBRD, DGBBRD, SGBBRD, ZGBBRD. Yes the caps version is just the loud version. πŸ”₯


πŸ¦‹ Detailed Description πŸ¦‹

Okay so this section on the page is lowkey empty β€” no cap, there's literally nothing under the heading in the source. The actual tea lives down in Function Documentation, so scroll with me. πŸ‘‘


πŸ‘‘ Function Documentation πŸ‘‘

πŸ’œ cgbbrd β€” subroutine cgbbrd

The full signature, character for character, because we do not paraphrase code in this house:

subroutine cgbbrd (character vect, integer m, integer n, integer ncc, integer kl, integer ku, complex, dimension( ldab, * ) ab, integer ldab, real, dimension( * ) d, real, dimension( * ) e, complex, dimension( ldq, * ) q, integer ldq, complex, dimension( ldpt, * ) pt, integer ldpt, complex, dimension( ldc, * ) c, integer ldc, complex, dimension( * ) work, real, dimension( * ) rwork, integer info)

CGBBRD

πŸŽ€ Purpose

CGBBRD reduces a complex general m-by-n band matrix A to real upper bidiagonal form B by a unitary transformation: Q**H * A * P = B.

The routine computes B, and optionally forms Q or P**H, or computes Q**H*C for a given matrix C.

πŸ’– Parameters

  • VECT β€” VECT is CHARACTER*1. Tells the routine whether or not the matrices Q and P**H are to be formed.
    • = 'N': do not form Q or P**H;
    • = 'Q': form Q only;
    • = 'P': form P**H only;
    • = 'B': form both.
  • M β€” M is INTEGER. The number of rows of the matrix A. M >= 0.
  • N β€” N is INTEGER. The number of columns of the matrix A. N >= 0.
  • NCC β€” NCC is INTEGER. The number of columns of the matrix C. NCC >= 0.
  • KL β€” KL is INTEGER. The number of subdiagonals of the matrix A. KL >= 0.
  • KU β€” KU is INTEGER. The number of superdiagonals of the matrix A. KU >= 0.
  • AB β€” AB is COMPLEX array, 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. 🫢 (yes, your input gets ate β€” that's the deal)
  • LDAB β€” LDAB is INTEGER. The leading dimension of the array A. LDAB >= KL+KU+1.
  • D β€” D is REAL array, dimension (min(M,N)). The diagonal elements of the bidiagonal matrix B.
  • E β€” E is REAL array, dimension (min(M,N)-1). The superdiagonal elements of the bidiagonal matrix B.
  • Q β€” Q is COMPLEX array, dimension (LDQ,M). If VECT = 'Q' or 'B', the m-by-m unitary matrix Q. If VECT = 'N' or 'P', the array Q is not referenced.
  • LDQ β€” LDQ is INTEGER. The leading dimension of the array Q. LDQ >= max(1,M) if VECT = 'Q' or 'B'; LDQ >= 1 otherwise.
  • PT β€” PT is COMPLEX array, dimension (LDPT,N). If VECT = 'P' or 'B', the n-by-n unitary matrix P'. If VECT = 'N' or 'Q', the array PT is not referenced.
  • LDPT β€” LDPT is INTEGER. The leading dimension of the array PT. LDPT >= max(1,N) if VECT = 'P' or 'B'; LDPT >= 1 otherwise.
  • C β€” C is COMPLEX array, dimension (LDC,NCC). On entry, an m-by-ncc matrix C. On exit, C is overwritten by Q**H*C. C is not referenced if NCC = 0.
  • LDC β€” LDC is INTEGER. The leading dimension of the array C. LDC >= max(1,M) if NCC > 0; LDC >= 1 if NCC = 0.
  • WORK β€” WORK is COMPLEX array, dimension (max(M,N)).
  • RWORK β€” RWORK is REAL array, dimension (max(M,N)).
  • INFO β€” INFO is INTEGER.
    • = 0: successful exit.
    • < 0: if INFO = -i, the i-th argument had an illegal value.

🧚 Author

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

Definition at line 191 of file cgbbrd.f.


πŸ“ dgbbrd β€” subroutine dgbbrd

Signature, verbatim, no edits:

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.

πŸ’– Parameters

  • VECT β€” VECT is CHARACTER*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.
  • M β€” M is INTEGER. The number of rows of the matrix A. M >= 0.
  • N β€” N is INTEGER. The number of columns of the matrix A. N >= 0.
  • NCC β€” NCC is INTEGER. The number of columns of the matrix C. NCC >= 0.
  • KL β€” KL is INTEGER. The number of subdiagonals of the matrix A. KL >= 0.
  • KU β€” KU is INTEGER. The number of superdiagonals of the matrix A. KU >= 0.
  • AB β€” AB is DOUBLE PRECISION array, 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. πŸ’€ rip your original numbers
  • LDAB β€” LDAB is INTEGER. The leading dimension of the array A. LDAB >= KL+KU+1.
  • D β€” D is DOUBLE PRECISION array, dimension (min(M,N)). The diagonal elements of the bidiagonal matrix B.
  • E β€” E is DOUBLE PRECISION array, dimension (min(M,N)-1). The superdiagonal elements of the bidiagonal matrix B.
  • Q β€” Q is DOUBLE PRECISION array, 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.
  • LDQ β€” LDQ is INTEGER. The leading dimension of the array Q. LDQ >= max(1,M) if VECT = 'Q' or 'B'; LDQ >= 1 otherwise.
  • PT β€” PT is DOUBLE PRECISION array, 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.
  • LDPT β€” LDPT is INTEGER. The leading dimension of the array PT. LDPT >= max(1,N) if VECT = 'P' or 'B'; LDPT >= 1 otherwise.
  • C β€” C is DOUBLE PRECISION array, 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.
  • LDC β€” LDC is INTEGER. The leading dimension of the array C. LDC >= max(1,M) if NCC > 0; LDC >= 1 if NCC = 0.
  • WORK β€” WORK is DOUBLE PRECISION array, dimension (2*max(M,N)). ⭐ note the 2* bestie, it's not a typo, it's the double-precision special
  • INFO β€” INFO is INTEGER.
    • = 0: successful exit.
    • < 0: if INFO = -i, the i-th argument had an illegal value.

🧚 Author

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

Definition at line 185 of file dgbbrd.f.


πŸ¦‹ sgbbrd β€” subroutine sgbbrd

Signature, untouched, exactly as the page has it:

subroutine sgbbrd (character vect, integer m, integer n, integer ncc, integer kl, integer ku, real, dimension( ldab, * ) ab, integer ldab, real, dimension( * ) d, real, dimension( * ) e, real, dimension( ldq, * ) q, integer ldq, real, dimension( ldpt, * ) pt, integer ldpt, real, dimension( ldc, * ) c, integer ldc, real, dimension( * ) work, integer info)

SGBBRD

πŸŽ€ Purpose

SGBBRD 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.

πŸ’– Parameters

  • VECT β€” VECT is CHARACTER*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.
  • M β€” M is INTEGER. The number of rows of the matrix A. M >= 0.
  • N β€” N is INTEGER. The number of columns of the matrix A. N >= 0.
  • NCC β€” NCC is INTEGER. The number of columns of the matrix C. NCC >= 0.

okay bestie, that's where part 1 stops β€” the parameters keep rolling in part 2, so don't go anywhere 🌸✨
  • KL β€” KL is INTEGER. It's the number of subdiagonals of matrix A. KL >= 0, bestie.
  • KU β€” KU is INTEGER. It's the number of superdiagonals of matrix A. KU >= 0.
  • AB β€” AB is REAL array, dimension (LDAB,N). On entry, this is the m-by-n band matrix A, stored in rows 1 to KL+KU+1. The j-th column of A lives in the j-th column of AB like this: 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. iconic behavior, honestly.
  • LDAB β€” LDAB is INTEGER. Leading dimension of array A. LDAB >= KL+KU+1.
  • D β€” D is REAL array, dimension (min(M,N)). These are the diagonal elements of the bidiagonal matrix B.
  • E β€” E is REAL array, dimension (min(M,N)-1). These are the superdiagonal elements of the bidiagonal matrix B.
  • Q β€” Q is REAL array, dimension (LDQ,M). If VECT = 'Q' or 'B', it's the m-by-m orthogonal matrix Q. If VECT = 'N' or 'P', the array Q is not referenced.
  • LDQ β€” LDQ is INTEGER. Leading dimension of array Q. LDQ >= max(1,M) if VECT = 'Q' or 'B'; LDQ >= 1 otherwise.
  • PT β€” PT is REAL array, dimension (LDPT,N). If VECT = 'P' or 'B', it's the n-by-n orthogonal matrix P'. If VECT = 'N' or 'Q', the array PT is not referenced.
  • LDPT β€” LDPT is INTEGER. Leading dimension of array PT. LDPT >= max(1,N) if VECT = 'P' or 'B'; LDPT >= 1 otherwise.
  • C β€” C is REAL array, 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.
  • LDC β€” LDC is INTEGER. Leading dimension of array C. LDC >= max(1,M) if NCC > 0; LDC >= 1 if NCC = 0.
  • WORK β€” WORK is REAL array, dimension (2*max(M,N)).
  • INFO β€” INFO is INTEGER. = 0: successful exit. < 0: if INFO = -i, the i-th argument had an illegal value.

🌸 Author 🌸

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

Definition at line 185 of file sgbbrd.f.


πŸ’– subroutine zgbbrd πŸ’–

subroutine zgbbrd (character vect, integer m, integer n, integer ncc,
    integer kl, integer ku, complex*16, dimension( ldab, * ) ab, integer
    ldab, double precision, dimension( * ) d, double precision, dimension( *
    ) e, complex*16, dimension( ldq, * ) q, integer ldq, complex*16,
    dimension( ldpt, * ) pt, integer ldpt, complex*16, dimension( ldc, * )
    c, integer ldc, complex*16, dimension( * ) work, double precision,
    dimension( * ) rwork, integer info)

✨ Purpose ✨

Okay so ZGBBRD reduces a complex general m-by-n band matrix A to real upper bidiagonal form B by a unitary transformation: Q**H * A * P = B. That's the glow-up.

The routine computes B, and optionally forms Q or P**H, or computes Q**H*C for a given matrix C. choose your adventure, bestie.

πŸŽ€ Parameters πŸŽ€

  • VECT β€” VECT is CHARACTER*1. It says whether or not the matrices Q and PH are to be formed. = 'N': do not form Q or PH; = 'Q': form Q only; = 'P': form P**H only; = 'B': form both.
  • M β€” M is INTEGER. The number of rows of matrix A. M >= 0.
  • N β€” N is INTEGER. The number of columns of matrix A. N >= 0.
  • NCC β€” NCC is INTEGER. The number of columns of matrix C. NCC >= 0.
  • KL β€” KL is INTEGER. The number of subdiagonals of matrix A. KL >= 0.
  • KU β€” KU is INTEGER. The number of superdiagonals of matrix A. KU >= 0.
  • AB β€” AB is COMPLEX*16 array, 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.
  • LDAB β€” LDAB is INTEGER. The leading dimension of the array A. LDAB >= KL+KU+1.
  • D β€” D is DOUBLE PRECISION array, dimension (min(M,N)). The diagonal elements of the bidiagonal matrix B.
  • E β€” E is DOUBLE PRECISION array, dimension (min(M,N)-1). The superdiagonal elements of the bidiagonal matrix B.
  • Q β€” Q is COMPLEX*16 array, dimension (LDQ,M). If VECT = 'Q' or 'B', the m-by-m unitary matrix Q. If VECT = 'N' or 'P', the array Q is not referenced.
  • LDQ β€” LDQ is INTEGER. The leading dimension of the array Q. LDQ >= max(1,M) if VECT = 'Q' or 'B'; LDQ >= 1 otherwise.
  • PT β€” PT is COMPLEX*16 array, dimension (LDPT,N). If VECT = 'P' or 'B', the n-by-n unitary matrix P'. If VECT = 'N' or 'Q', the array PT is not referenced.
  • LDPT β€” LDPT is INTEGER. The leading dimension of the array PT. LDPT >= max(1,N) if VECT = 'P' or 'B'; LDPT >= 1 otherwise.
  • C β€” C is COMPLEX*16 array, dimension (LDC,NCC). On entry, an m-by-ncc matrix C. On exit, C is overwritten by Q**H*C. C is not referenced if NCC = 0.
  • LDC β€” LDC is INTEGER. The leading dimension of the array C. LDC >= max(1,M) if NCC > 0; LDC >= 1 if NCC = 0.
  • WORK β€” WORK is COMPLEX*16 array, dimension (max(M,N)).
  • RWORK β€” RWORK is DOUBLE PRECISION array, dimension (max(M,N)).
  • INFO β€” INFO is INTEGER. = 0: successful exit. < 0: if INFO = -i, the i-th argument had an illegal value.

πŸ‘‘ Author πŸ‘‘

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

Definition at line 191 of file zgbbrd.f.


🌈 Author 🌈

Generated automatically by Doxygen for LAPACK from the source code.

okay that's the whole gbbrd(3) moment, bestie β€” LAPACK Version 3.12.0, page gbbrd(3). slay and bye πŸ’…πŸ’–

πŸ“¦ where this page comes from