unbdb2(3)

๐ŸŒธ NAME ๐ŸŒธ

okay so bestie, welcome to unbdb2(3) โ€” straight out of the Library Functions Manual ๐Ÿ“š โ€” and it's the page for unbdb2, aka {un,or}bdb2: the step in uncsd2by1 โœจ. That's the whole vibe check for the title, now let's get into it ๐Ÿ’…


๐ŸŽ€ SYNOPSIS ๐ŸŽ€

Functions

four subroutine girlies live on this page, and here's the full lineup, exactly as declared ๐Ÿซถ

  • cunbdb2 โ€” the complex one ๐Ÿ’œ
subroutine cunbdb2 (m, p, q, x11, ldx11, x21, ldx21, theta, phi, taup1,
    taup2, tauq1, work, lwork, info)
    CUNBDB2
  • dorbdb2 โ€” the double precision one ๐Ÿฉต
subroutine dorbdb2 (m, p, q, x11, ldx11, x21, ldx21, theta, phi, taup1,
    taup2, tauq1, work, lwork, info)
    DORBDB2
  • sorbdb2 โ€” the single precision one ๐ŸŒธ
subroutine sorbdb2 (m, p, q, x11, ldx11, x21, ldx21, theta, phi, taup1,
    taup2, tauq1, work, lwork, info)
    SORBDB2
  • zunbdb2 โ€” the double complex one ๐Ÿ’ซ
subroutine zunbdb2 (m, p, q, x11, ldx11, x21, ldx21, theta, phi, taup1,
    taup2, tauq1, work, lwork, info)
    ZUNBDB2

๐Ÿ’ซ Detailed Description ๐Ÿ’ซ

no prose here, iconically โ€” the manual just drops the heading and moves straight on to the function docs. main character energy, honestly ๐Ÿ‘‘


๐Ÿ“– Function Documentation ๐Ÿ“–

๐Ÿงฎ subroutine cunbdb2

Purpose

okay so picture this ๐ŸŽฌ โ€” CUNBDB2 simultaneously bidiagonalizes the blocks of a tall and skinny matrix X with orthonormal columns:

                           [ B11 ]
     [ X11 ]   [ P1 |    ] [  0  ]
     [-----] = [---------] [-----] Q1**T .
     [ X21 ]   [    | P2 ] [ B21 ]
                           [  0  ]

X11 is P-by-Q, and X21 is (M-P)-by-Q. P must be no larger than M-P, Q, or M-Q. and like, quick heads up โ€” CUNBDB1, CUNBDB3, and CUNBDB4 are the routines that handle the cases where P is not the minimum dimension ๐Ÿ’…

the unitary matrices P1, P2, and Q1 are P-by-P, (M-P)-by-(M-P), and (M-Q)-by-(M-Q), respectively. they're represented implicitly by Householder vectors โœจ

B11 and B12 are P-by-P bidiagonal matrices represented implicitly by angles THETA, PHI ๐Ÿฆ‹

Parameters

  • M โ€” INTEGER. the number of rows X11 plus the number of rows in X21.
  • P โ€” INTEGER. the number of rows in X11. 0 <= P <= min(M-P,Q,M-Q).
  • Q โ€” INTEGER. the number of columns in X11 and X21. 0 <= Q <= M.
  • X11 โ€” COMPLEX array, dimension (LDX11,Q). on entry, the top block of the matrix X to be reduced. on exit, the columns of tril(X11) specify reflectors for P1, and the rows of triu(X11,1) specify reflectors for Q1 ๐Ÿ‘‘
  • LDX11 โ€” INTEGER. the leading dimension of X11. LDX11 >= P.
  • X21 โ€” COMPLEX array, dimension (LDX21,Q). on entry, the bottom block of the matrix X to be reduced. on exit, the columns of tril(X21) specify reflectors for P2 โœจ
  • LDX21 โ€” INTEGER. the leading dimension of X21. LDX21 >= M-P.
  • THETA โ€” REAL array, dimension (Q). the entries of the bidiagonal blocks B11, B21 are defined by THETA and PHI. see Further Details ๐Ÿซถ
  • PHI โ€” REAL array, dimension (Q-1). the entries of the bidiagonal blocks B11, B21 are defined by THETA and PHI. see Further Details ๐Ÿซถ
  • TAUP1 โ€” COMPLEX array, dimension (P-1). the scalar factors of the elementary reflectors that define P1.
  • TAUP2 โ€” COMPLEX array, dimension (Q). the scalar factors of the elementary reflectors that define P2.
  • TAUQ1 โ€” COMPLEX array, dimension (Q). the scalar factors of the elementary reflectors that define Q1.
  • WORK โ€” COMPLEX array, dimension (LWORK).
  • LWORK โ€” INTEGER. the dimension of the array WORK. LWORK >= M-Q.
and okay, important: 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: 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.

Further Details

the upper-bidiagonal blocks B11, B21 are represented implicitly by angles THETA(1), ..., THETA(Q) and PHI(1), ..., PHI(Q-1). every entry in each bidiagonal band is a product of a sine or cosine of a THETA with a sine or cosine of a PHI. see [1] or CUNCSD for details ๐Ÿ”ฅ

P1, P2, and Q1 are represented as products of elementary reflectors. see CUNCSD2BY1 for details on generating P1, P2, and Q1 using CUNGQR and CUNGLQ โœจ

References

  • [1] Brian D. Sutton. Computing the complete CS decomposition. Numer. Algorithms, 50(1):33-65, 2009. ๐Ÿ“–

Definition at line 200 of file cunbdb2.f.


๐Ÿงฎ subroutine dorbdb2

Purpose

same iconic energy, real-number edition ๐Ÿ’€ โ€” DORBDB2 simultaneously bidiagonalizes the blocks of a tall and skinny matrix X with orthonormal columns:

                           [ B11 ]
     [ X11 ]   [ P1 |    ] [  0  ]
     [-----] = [---------] [-----] Q1**T .
     [ X21 ]   [    | P2 ] [ B21 ]
                           [  0  ]

X11 is P-by-Q, and X21 is (M-P)-by-Q. P must be no larger than M-P, Q, or M-Q. and again, DORBDB1, DORBDB3, and DORBDB4 are the routines that handle the cases where P is not the minimum dimension ๐Ÿ’…

the orthogonal matrices P1, P2, and Q1 are P-by-P, (M-P)-by-(M-P), and (M-Q)-by-(M-Q), respectively. they're represented implicitly by Householder vectors โœจ

B11 and B12 are P-by-P bidiagonal matrices represented implicitly by angles THETA, PHI ๐Ÿฆ‹

Parameters

  • M โ€” INTEGER. the number of rows X11 plus the number of rows in X21.
  • P โ€” INTEGER. the number of rows in X11. 0 <= P <= min(M-P,Q,M-Q).
  • Q โ€” INTEGER. the number of columns in X11 and X21. 0 <= Q <= M.
  • X11 โ€” DOUBLE PRECISION array, dimension (LDX11,Q). on entry, the top block of the matrix X to be reduced. on exit, the columns of tril(X11) specify reflectors for P1, and the rows of triu(X11,1) specify reflectors for Q1 ๐Ÿ‘‘
  • LDX11 โ€” INTEGER. the leading dimension of X11. LDX11 >= P.
  • X21 โ€” DOUBLE PRECISION array, dimension (LDX21,Q). on entry, the bottom block of the matrix X to be reduced. on exit, the columns of tril(X21) specify reflectors for P2 โœจ
  • LDX21 โ€” INTEGER. the leading dimension of X21. LDX21 >= M-P.
  • THETA โ€” DOUBLE PRECISION array, dimension (Q). the entries of the bidiagonal blocks B11, B21 are defined by THETA and PHI. see Further Details ๐Ÿซถ
  • PHI โ€” DOUBLE PRECISION array, dimension (Q-1). the entries of the bidiagonal blocks B11, B21 are defined by THETA and PHI. see Further Details ๐Ÿซถ
  • TAUP1 โ€” DOUBLE PRECISION array, dimension (P-1). the scalar factors of the elementary reflectors that define P1.
  • TAUP2 โ€” DOUBLE PRECISION array, dimension (Q). the scalar factors of the elementary reflectors that define P2.
  • TAUQ1 โ€” DOUBLE PRECISION array, dimension (Q). the scalar factors of the elementary reflectors that define Q1.
  • WORK โ€” DOUBLE PRECISION array, dimension (LWORK).
  • LWORK โ€” INTEGER. the dimension of the array WORK. LWORK >= M-Q.
same caveat, no cap: 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: 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.

Further Details

the upper-bidiagonal blocks B11, B21 are represented implicitly by angles THETA(1), ..., THETA(Q) and PHI(1), ..., PHI(Q-1). every entry in each bidiagonal band is a product of a sine or cosine of a THETA with a sine or cosine of a PHI. see [1] or DORCSD for details ๐Ÿ”ฅ

P1, P2, and Q1 are represented as products of elementary reflectors. see DORCSD2BY1 for details on generating P1, P2, and Q1 using DORGQR and DORGLQ โœจ

References

  • [1] Brian D. Sutton. Computing the complete CS decomposition. Numer. Algorithms, 50(1):33-65, 2009. ๐Ÿ“–

and that's where this part wraps, but we are so not done โ€” sorbdb2 and zunbdb2 are still waiting for their moment ๐ŸŒˆ

Definition at line 200 of file dorbdb2.f.

okay so next up is sorbdb2, and she is genuinely doing the most in the best way possible. ๐Ÿ’…

๐Ÿฉท sorbdb2

   subroutine sorbdb2 (integer m, integer p, integer q, real,
       dimension(ldx11,*) x11, integer ldx11, real, dimension(ldx21,*) x21,
       integer ldx21, real, dimension(*) theta, real, dimension(*) phi, real,
       dimension(*) taup1, real, dimension(*) taup2, real, dimension(*) tauq1,
       real, dimension(*) work, integer lwork, integer info)

SORBDB2

๐ŸŽฏ Purpose

okay so SORBDB2 simultaneously bidiagonalizes the blocks of a tall and skinny matrix X with orthonormal columns. the glow-up is literally this:

                           [ B11 ]
     [ X11 ]   [ P1 |    ] [  0  ]
     [-----] = [---------] [-----] Q1**T .
     [ X21 ]   [    | P2 ] [ B21 ]
                           [  0  ]

X11 is P-by-Q, and X21 is (M-P)-by-Q. P must be no larger than M-P, Q, or M-Q. Routines SORBDB1, SORBDB3, and SORBDB4 handle cases in which P is not the minimum dimension. no cap. โœจ

The orthogonal matrices P1, P2, and Q1 are P-by-P, (M-P)-by-(M-P), and (M-Q)-by-(M-Q), respectively. They are represented implicitly by Householder vectors. ๐Ÿซถ

B11 and B12 are P-by-P bidiagonal matrices represented implicitly by angles THETA, PHI. ๐Ÿ’–

๐Ÿงš Parameters

  • M โ€” M is INTEGER. The number of rows X11 plus the number of rows in X21. ๐Ÿ’ซ
  • P โ€” P is INTEGER. The number of rows in X11. Constraint: 0 <= P <= min(M-P,Q,M-Q). ๐Ÿ‘‘
  • Q โ€” Q is INTEGER. The number of columns in X11 and X21. Constraint: 0 <= Q <= M. ๐ŸŒธ
  • X11 โ€” X11 is REAL array, dimension (LDX11,Q). On entry, the top block of the matrix X to be reduced. On exit, the columns of tril(X11) specify reflectors for P1 and the rows of triu(X11,1) specify reflectors for Q1. ๐Ÿฆ‹
  • LDX11 โ€” LDX11 is INTEGER. The leading dimension of X11. LDX11 >= P. โœจ
  • X21 โ€” X21 is REAL array, dimension (LDX21,Q). On entry, the bottom block of the matrix X to be reduced. On exit, the columns of tril(X21) specify reflectors for P2. ๐ŸŒˆ
  • LDX21 โ€” LDX21 is INTEGER. The leading dimension of X21. LDX21 >= M-P. ๐Ÿ’œ
  • THETA โ€” THETA is REAL array, dimension (Q). The entries of the bidiagonal blocks B11, B21 are defined by THETA and PHI. See Further Details. ๐ŸŽ€
  • PHI โ€” PHI is REAL array, dimension (Q-1). The entries of the bidiagonal blocks B11, B21 are defined by THETA and PHI. See Further Details. ๐Ÿ“
  • TAUP1 โ€” TAUP1 is REAL array, dimension (P-1). The scalar factors of the elementary reflectors that define P1. ๐Ÿ’…
  • TAUP2 โ€” TAUP2 is REAL array, dimension (Q). The scalar factors of the elementary reflectors that define P2. ๐Ÿ”ฅ
  • TAUQ1 โ€” TAUQ1 is REAL array, dimension (Q). The scalar factors of the elementary reflectors that define Q1. โญ
  • WORK โ€” WORK is REAL array, dimension (LWORK). ๐Ÿงš
  • LWORK โ€” LWORK is INTEGER. The dimension of the array WORK. LWORK >= M-Q. 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 โ€” 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.

๐Ÿ” Further Details

The upper-bidiagonal blocks B11, B21 are represented implicitly by angles THETA(1), ..., THETA(Q) and PHI(1), ..., PHI(Q-1). Every entry in each bidiagonal band is a product of a sine or cosine of a THETA with a sine or cosine of a PHI. See [1] or SORCSD for details. ๐ŸŽ€

P1, P2, and Q1 are represented as products of elementary reflectors. See SORCSD2BY1 for details on generating P1, P2, and Q1 using SORGQR and SORGLQ. ๐Ÿซถ

๐Ÿ“š References

[1] Brian D. Sutton. Computing the complete CS decomposition. Numer. Algorithms, 50(1):33-65, 2009.

Definition at line 199 of file sorbdb2.f.


๐Ÿ’œ zunbdb2

   subroutine zunbdb2 (integer m, integer p, integer q, complex*16,
       dimension(ldx11,*) x11, integer ldx11, complex*16, dimension(ldx21,*)
       x21, integer ldx21, double precision, dimension(*) theta, double
       precision, dimension(*) phi, complex*16, dimension(*) taup1, complex*16,
       dimension(*) taup2, complex*16, dimension(*) tauq1, complex*16,
       dimension(*) work, integer lwork, integer info)

ZUNBDB2

๐ŸŽฏ Purpose

ZUNBDB2 simultaneously bidiagonalizes the blocks of a tall and skinny matrix X with orthonormal columns. the whole transformation is giving:

                           [ B11 ]
     [ X11 ]   [ P1 |    ] [  0  ]
     [-----] = [---------] [-----] Q1**T .
     [ X21 ]   [    | P2 ] [ B21 ]
                           [  0  ]

X11 is P-by-Q, and X21 is (M-P)-by-Q. P must be no larger than M-P, Q, or M-Q. Routines ZUNBDB1, ZUNBDB3, and ZUNBDB4 handle cases in which P is not the minimum dimension. periodt. โœจ

The unitary matrices P1, P2, and Q1 are P-by-P, (M-P)-by-(M-P), and (M-Q)-by-(M-Q), respectively. They are represented implicitly by Householder vectors. ๐Ÿฆ‹

B11 and B12 are P-by-P bidiagonal matrices represented implicitly by angles THETA, PHI. ๐Ÿ’–

๐Ÿงš Parameters

  • M โ€” M is INTEGER. The number of rows X11 plus the number of rows in X21. ๐Ÿ’ซ
  • P โ€” P is INTEGER. The number of rows in X11. Constraint: 0 <= P <= min(M-P,Q,M-Q). ๐Ÿ‘‘
  • Q โ€” Q is INTEGER. The number of columns in X11 and X21. Constraint: 0 <= Q <= M. ๐ŸŒธ
  • X11 โ€” X11 is COMPLEX*16 array, dimension (LDX11,Q). On entry, the top block of the matrix X to be reduced. On exit, the columns of tril(X11) specify reflectors for P1 and the rows of triu(X11,1) specify reflectors for Q1. ๐Ÿฆ‹
  • LDX11 โ€” LDX11 is INTEGER. The leading dimension of X11. LDX11 >= P. โœจ
  • X21 โ€” X21 is COMPLEX*16 array, dimension (LDX21,Q). On entry, the bottom block of the matrix X to be reduced. On exit, the columns of tril(X21) specify reflectors for P2. ๐ŸŒˆ
  • LDX21 โ€” LDX21 is INTEGER. The leading dimension of X21. LDX21 >= M-P. ๐Ÿ’œ
  • THETA โ€” THETA is DOUBLE PRECISION array, dimension (Q). The entries of the bidiagonal blocks B11, B21 are defined by THETA and PHI. See Further Details. ๐ŸŽ€
  • PHI โ€” PHI is DOUBLE PRECISION array, dimension (Q-1). The entries of the bidiagonal blocks B11, B21 are defined by THETA and PHI. See Further Details. ๐Ÿ“
  • TAUP1 โ€” TAUP1 is COMPLEX*16 array, dimension (P-1). The scalar factors of the elementary reflectors that define P1. ๐Ÿ’…
  • TAUP2 โ€” TAUP2 is COMPLEX*16 array, dimension (Q). The scalar factors of the elementary reflectors that define P2. ๐Ÿ”ฅ
  • TAUQ1 โ€” TAUQ1 is COMPLEX*16 array, dimension (Q). The scalar factors of the elementary reflectors that define Q1. โญ
  • WORK โ€” WORK is COMPLEX*16 array, dimension (LWORK). ๐Ÿงš
  • LWORK โ€” LWORK is INTEGER. The dimension of the array WORK. LWORK >= M-Q. 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 โ€” 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.

๐Ÿ” Further Details

The upper-bidiagonal blocks B11, B21 are represented implicitly by angles THETA(1), ..., THETA(Q) and PHI(1), ..., PHI(Q-1). Every entry in each bidiagonal band is a product of a sine or cosine of a THETA with a sine or cosine of a PHI. See [1] or ZUNCSD for details. ๐ŸŽ€

P1, P2, and Q1 are represented as products of elementary reflectors. See ZUNCSD2BY1 for details on generating P1, P2, and Q1 using ZUNGQR and ZUNGLQ. ๐Ÿซถ

๐Ÿ“š References

[1] Brian D. Sutton. Computing the complete CS decomposition. Numer. Algorithms, 50(1):33-65, 2009.

Definition at line 199 of file zunbdb2.f.


๐Ÿ‘‘ Author

Generated automatically by Doxygen for LAPACK from the source code.

๐Ÿ’– and thatโ€™s the whole unbdb2(3) page, bestie โ€” LAPACK Version 3.12.0, generated by Doxygen for LAPACK from the source code, periodt. ๐Ÿ’…โœจ

๐Ÿ“ฆ where this page comes from