unbdb6(3)

πŸ’… unbdb6(3) β€” {un,or}bdb6: step in uncsd2by1 ✨

okay so bestie, you've stumbled into the unbdb6 zone and honestly? it's giving supporting character with main character energy. this is the man page for unbdb6(3), and it's one little step inside uncsd2by1. that's the whole vibe. let's get into it 🫢


🌸 NAME 🌸

unbdb6 β€” {un,or}bdb6: step in uncsd2by1

like, literally that's the name, no notes πŸ’…


πŸŽ€ SYNOPSIS πŸŽ€

✨ Functions ✨

four routines, one job, and they're all ride-or-die identical except for the datatype bestie πŸ’–

  • cunbdb6 β€” the complex one πŸ’œ
subroutine cunbdb6 (m1, m2, n, x1, incx1, x2, incx2, q1, ldq1, q2, ldq2,
    work, lwork, info)
    CUNBDB6
  • dorbdb6 β€” the double precision one πŸ”₯
subroutine dorbdb6 (m1, m2, n, x1, incx1, x2, incx2, q1, ldq1, q2, ldq2,
    work, lwork, info)
    DORBDB6
  • sorbdb6 β€” the real (single precision) one ⭐
subroutine sorbdb6 (m1, m2, n, x1, incx1, x2, incx2, q1, ldq1, q2, ldq2,
    work, lwork, info)
    SORBDB6
  • zunbdb6 β€” the complex*16 one πŸ‘‘
subroutine zunbdb6 (m1, m2, n, x1, incx1, x2, incx2, q1, ldq1, q2, ldq2,
    work, lwork, info)
    ZUNBDB6

πŸ¦‹ Detailed Description πŸ¦‹

so the "detailed description" section up here is basically an empty group chat β€” the real tea lives down in the per-function docs below. keep scrolling, it's all there, i promise 🧚


πŸ’œ Function Documentation πŸ’œ

subroutine cunbdb6 πŸ’…

subroutine cunbdb6 (integer m1, integer m2, integer n, complex, dimension(*)
    x1, integer incx1, complex, dimension(*) x2, integer incx2, complex,
    dimension(ldq1,*) q1, integer ldq1, complex, dimension(ldq2,*) q2,
    integer ldq2, complex, dimension(*) work, integer lwork, integer info)

CUNBDB6 β€” she's the complex member of the squad πŸ’œ

✨ Purpose ✨

okay so CUNBDB6 orthogonalizes the column vector

     X = [ X1 ]
         [ X2 ]

with respect to the columns of

     Q = [ Q1 ] .
         [ Q2 ]

the columns of Q must be orthonormal (non-negotiable bestie, that's the vibe check). the orthogonalized vector will be zero if and only if it lies entirely in the range of Q β€” like, it's fully absorbed, nothing left over, zero notes πŸ«₯

the projection is computed with at most two iterations of the classical Gram-Schmidt algorithm, see

* L. Giraud, J. Langou, M. RozloΕΎnΓ­k. 2002. CERFACS Technical Report No. TR/PA/02/33. URL: https://www.cerfacs.fr/algor/reports/2002/TR_PA_02_33.pdf

that citation is copyrighted material, not me, i'm just the messenger πŸŽ€

🌸 Parameters 🌸

  • M1 β€” INTEGER. the dimension of X1 and the number of rows in Q1. 0 <= M1.
  • M2 β€” INTEGER. the dimension of X2 and the number of rows in Q2. 0 <= M2.
  • N β€” INTEGER. the number of columns in Q1 and Q2. 0 <= N.
  • X1 β€” COMPLEX array, dimension (M1). on entry, the top part of the vector to be orthogonalized. on exit, the top part of the projected vector. she goes in one girl and comes out another πŸ’«
  • INCX1 β€” INTEGER. increment for entries of X1.
  • X2 β€” COMPLEX array, dimension (M2). on entry, the bottom part of the vector to be orthogonalized. on exit, the bottom part of the projected vector.
  • INCX2 β€” INTEGER. increment for entries of X2.
  • Q1 β€” COMPLEX array, dimension (LDQ1, N). the top part of the orthonormal basis matrix.
  • LDQ1 β€” INTEGER. the leading dimension of Q1. LDQ1 >= M1.
  • Q2 β€” COMPLEX array, dimension (LDQ2, N). the bottom part of the orthonormal basis matrix.
  • LDQ2 β€” INTEGER. the leading dimension of Q2. LDQ2 >= M2.
  • WORK β€” COMPLEX array, dimension (LWORK).
  • LWORK β€” INTEGER. the dimension of the array WORK. LWORK >= N.
  • INFO β€” INTEGER.
    • = 0: successful exit. slay πŸ’…
    • < 0: if INFO = -i, the i-th argument had an illegal value. not slay 😭

πŸ‘‘ Author πŸ‘‘

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

definition at line 157 of file cunbdb6.f.


subroutine dorbdb6 πŸ”₯

subroutine dorbdb6 (integer m1, integer m2, integer n, double precision,
    dimension(*) x1, integer incx1, double precision, dimension(*) x2,
    integer incx2, double precision, dimension(ldq1,*) q1, integer ldq1,
    double precision, dimension(ldq2,*) q2, integer ldq2, double precision,
    dimension(*) work, integer lwork, integer info)

DORBDB6 β€” same energy, but make it double precision πŸ”₯

✨ Purpose ✨

DORBDB6 orthogonalizes the column vector

     X = [ X1 ]
         [ X2 ]

with respect to the columns of

     Q = [ Q1 ] .
         [ Q2 ]

columns of Q must be orthonormal, no cap. the orthogonalized vector will be zero if and only if it lies entirely in the range of Q. the projection is computed with at most two iterations of the classical Gram-Schmidt algorithm, and the receipt is:

* L. Giraud, J. Langou, M. RozloΕΎnΓ­k. 2002. CERFACS Technical Report No. TR/PA/02/33. URL: https://www.cerfacs.fr/algor/reports/2002/TR_PA_02_33.pdf

🌸 Parameters 🌸

  • M1 β€” INTEGER. the dimension of X1 and the number of rows in Q1. 0 <= M1.
  • M2 β€” INTEGER. the dimension of X2 and the number of rows in Q2. 0 <= M2.
  • N β€” INTEGER. the number of columns in Q1 and Q2. 0 <= N.
  • X1 β€” DOUBLE PRECISION array, dimension (M1). on entry, the top part of the vector to be orthogonalized. on exit, the top part of the projected vector.
  • INCX1 β€” INTEGER. increment for entries of X1.
  • X2 β€” DOUBLE PRECISION array, dimension (M2). on entry, the bottom part of the vector to be orthogonalized. on exit, the bottom part of the projected vector.
  • INCX2 β€” INTEGER. increment for entries of X2.
  • Q1 β€” DOUBLE PRECISION array, dimension (LDQ1, N). the top part of the orthonormal basis matrix.
  • LDQ1 β€” INTEGER. the leading dimension of Q1. LDQ1 >= M1.
  • Q2 β€” DOUBLE PRECISION array, dimension (LDQ2, N). the bottom part of the orthonormal basis matrix.
  • LDQ2 β€” INTEGER. the leading dimension of Q2. LDQ2 >= M2.
  • WORK β€” DOUBLE PRECISION array, dimension (LWORK).
  • LWORK β€” INTEGER. the dimension of the array WORK. LWORK >= N.
  • 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.

definition at line 157 of file dorbdb6.f.


subroutine sorbdb6 🌈

subroutine sorbdb6 (integer m1, integer m2, integer n, real, dimension(*)
    x1, integer incx1, real, dimension(*) x2, integer incx2, real,
    dimension(ldq1,*) q1, integer ldq1, real, dimension(ldq2,*) q2, integer
    ldq2, real, dimension(*) work, integer lwork, integer info)

SORBDB6 β€” the single-precision REAL one, she's lowkey the chillest of the group 🌈

✨ Purpose ✨

SORBDB6 orthogonalizes the column vector

     X = [ X1 ]
         [ X2 ]

with respect to the columns of

     Q = [ Q1 ] .
         [ Q2 ]

the columns of Q must be orthonormal (fr fr, do not skip this). the orthogonalized vector will be zero if and only if it lies entirely in the range of Q.

projection's computed with at most two iterations of the classical Gram-Schmidt algorithm, credit where credit's due:

* L. Giraud, J. Langou, M. RozloΕΎnΓ­k. 2002. CERFACS Technical Report No. TR/PA/02/33. URL: https://www.cerfacs.fr/algor/reports/2002/TR_PA_02_33.pdf

🌸 Parameters 🌸

  • M1 β€” INTEGER. the dimension of X1 and the number of rows in Q1. 0 <= M1.
  • M2 β€” INTEGER. the dimension of X2 and the number of rows in Q2. 0 <= M2.
  • N β€” INTEGER. the number of columns in Q1 and Q2. 0 <= N.
  • X1 β€” REAL array, dimension (M1). on entry, the top part of the vector to be orthogonalized. on exit, the top part of the projected vector. glow-up arc ✨
  • INCX1 β€” INTEGER. increment for entries of X1.
  • X2 β€” REAL array, dimension (M2). on entry, the bottom part of the vector to be orthogonalized. on exit, the bottom part of the projected vector.
  • INCX2 β€” INTEGER. increment for entries of X2.
  • Q1 β€” REAL array, dimension (LDQ1, N). the top part of the orthonormal basis matrix.
  • LDQ1 β€” INTEGER. the leading dimension of Q1. LDQ1 >= M1.
  • Q2 β€” REAL array, dimension (LDQ2, N). the bottom part of the orthonormal basis matrix.
  • LDQ2 β€” INTEGER. the leading dimension of Q2. LDQ2 >= M2.
  • WORK β€” REAL array, dimension (LWORK).
  • LWORK β€” INTEGER. the dimension of the array WORK. LWORK >= N.
  • INFO β€” INTEGER.
    • = 0: successful exit. we love a clean 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 157 of file sorbdb6.f.


πŸ¦‹ to be continued… πŸ¦‹

okay bestie we're not done β€” zunbdb6, the complex*16 queen πŸ‘‘, is up next with her own purpose section, full parameter rundown, authors and definition line. part 2 incoming πŸ’…βœ¨πŸ«Ά

...and that's exactly the vibe of what ZUNBDB6 does to a vector, bestie. Let me spell it out: it orthogonalizes the column vector

X = [ X1 ]
    [ X2 ]

with respect to the columns of

Q = [ Q1 ] .
    [ Q2 ]

The columns of Q must be orthonormal β€” like, non-negotiable, that's the whole basis of the trick ✨. And the tea on the result? The orthogonalized vector will be zero if and only if it lies entirely in the range of Q. Not "sometimes", not "kinda" β€” exactly then and only then πŸ’….

The projection gets computed with at most two iterations of the classical Gram-Schmidt algorithm. Two. That's it. Iconic efficiency, no cap. If you wanna read the receipts, see:


🌸 Parameters 🌸

Okay, deep breath, here's the whole cast of characters. Every single one, no skips 🫢

  • M1 β€” M1 is INTEGER. The dimension of X1 and the number of rows in Q1. Constraint: 0 <= M1.
  • M2 β€” M2 is INTEGER. The dimension of X2 and the number of rows in Q2. Constraint: 0 <= M2.
  • N β€” N is INTEGER. The number of columns in Q1 and Q2. Constraint: 0 <= N.
  • X1 β€” X1 is COMPLEX*16 array, dimension (M1).
    • On entry, the top part of the vector to be orthogonalized.
    • On exit, the top part of the projected vector.
  • INCX1 β€” INCX1 is INTEGER. Increment for entries of X1. (Yes, the strut-your-stuff spacing value, she gets a say too πŸ’ƒ)
  • X2 β€” X2 is COMPLEX*16 array, dimension (M2).
    • On entry, the bottom part of the vector to be orthogonalized.
    • On exit, the bottom part of the projected vector.
  • INCX2 β€” INCX2 is INTEGER. Increment for entries of X2.
  • Q1 β€” Q1 is COMPLEX*16 array, dimension (LDQ1, N). The top part of the orthonormal basis matrix. πŸ‘‘
  • LDQ1 β€” LDQ1 is INTEGER. The leading dimension of Q1. Constraint: LDQ1 >= M1.
  • Q2 β€” Q2 is COMPLEX*16 array, dimension (LDQ2, N). The bottom part of the orthonormal basis matrix.
  • LDQ2 β€” LDQ2 is INTEGER. The leading dimension of Q2. Constraint: LDQ2 >= M2.
  • WORK β€” WORK is COMPLEX*16 array, dimension (LWORK). The scratch space, doing the invisible labor so you don't have to 🧚
  • LWORK β€” LWORK is INTEGER. The dimension of the array WORK. Constraint: LWORK >= N. Don't skimp, she needs room to breathe.
  • INFO β€” INFO is INTEGER. The vibe check at the end:
    • = 0: successful exit. Slay πŸ’–
    • < 0: if INFO = -i, the i-th argument had an illegal value. Oops, somebody passed something cursed, go fix argument number i πŸ™ˆ
Lowkey important, bestie: those LDQ1 >= M1 and LDQ2 >= M2 and LWORK >= N lines aren't suggestions, they're the law. Break them and INFO will snitch on you with a negative index. Periodt.

πŸ‘‘ Author πŸ‘‘

Credit where credit is due, these legends wrote it:

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

Definition at line 157 of file zunbdb6.f.


And that's the whole page, bestie β€” you ate that reading session fr fr πŸŽ€ The version tag on this one is LAPACK Version 3.12.0, generated straight from the source code by Doxygen for LAPACK (page unbdb6(3)), so go forth and orthogonalize responsibly πŸ’œπŸ¦‹πŸŒΈ

πŸ“¦ where this page comes from