/home/abui.../zunbdb5.f(3)
πΈ NAME πΈ
ok so this is /home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/zunbdb5.f β that's the file, bestie, that's literally the whole name section. it's a LAPACK source file, from the Library Functions Manual, page /home/abui.../zunbdb5.f(3). we move π
β¨ SYNOPSIS β¨
Functions/Subroutines
the whole vibe, in one signature:
subroutine ZUNBDB5 (m1, m2, n, x1, incx1, x2, incx2, q1, ldq1, q2, ldq2,
work, lwork, info)
ZUNBDB5 β that's her. that's the name. iconic, no notes π
π Function/Subroutine Documentation π
here's the full thing in all her glory, spelled out completely:
subroutine ZUNBDB5 (integer m1, integer m2, integer n, complex*16,
dimension(*) x1, integer incx1, complex*16, dimension(*) x2, integer
incx2, complex*16, dimension(ldq1,*) q1, integer ldq1, complex*16,
dimension(ldq2,*) q2, integer ldq2, complex*16, dimension(*) work,
integer lwork, integer info)
ZUNBDB5
Purpose:
ok so what she does β and I need you to stay with me here, because this is the good part:
!>
!> ZUNBDB5 orthogonalizes the column vector
!> X = [ X1 ]
!> [ X2 ]
!> with respect to the columns of
!> Q = [ Q1 ] .
!> [ Q2 ]
!> The columns of Q must be orthonormal.
!>
!> If the projection is zero according to Kahan's
!> criterion, then some other vector from the orthogonal complement
!> is returned. This vector is chosen in an arbitrary but deterministic
!> way.
!>
!>
so basically: you hand her a big stacked column vector X β top half X1, bottom half X2 β and she orthogonalizes it against the columns of a stacked matrix Q β top half Q1, bottom half Q2. π¦
π important: the columns of Q must be orthonormal. that's not a suggestion, that's a requirement. don't come at her with non-orthonormal columns, she will not be okay.
and if the projection comes out zero according to Kahan's criterion? she doesn't just give up β she returns some other vector from the orthogonal complement instead. it's chosen in an arbitrary but deterministic way. so like, random-looking but reproducible. main character energy β¨
Parameters
buckle up buttercup, here's every single one π
M1
!> M1 is INTEGER
!> The dimension of X1 and the number of rows in Q1. 0 <= M1.
!>
so M1 is INTEGER, it's the dimension of X1 and the number of rows in Q1, and the constraint is 0 <= M1.
M2
!> M2 is INTEGER
!> The dimension of X2 and the number of rows in Q2. 0 <= M2.
!>
M2 is INTEGER too β dimension of X2, number of rows in Q2, and 0 <= M2.
N
!> N is INTEGER
!> The number of columns in Q1 and Q2. 0 <= N.
!>
N is INTEGER: how many columns Q1 and Q2 have. 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.
!>
X1 is a COMPLEX*16 array, dimension (M1). on entry it's the top part of the vector to be orthogonalized, on exit it's the top part of the projected vector. glow-up moment π«Ά
INCX1
!> INCX1 is INTEGER
!> Increment for entries of X1.
!>
INCX1 is INTEGER β the increment for entries of X1.
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.
!>
X2 is a 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. same transformation, different half π
INCX2
!> INCX2 is INTEGER
!> Increment for entries of X2.
!>
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.
!>
Q1 is a COMPLEX*16 array, dimension (LDQ1, N) β the top part of the orthonormal basis matrix. π
LDQ1
!> LDQ1 is INTEGER
!> The leading dimension of Q1. LDQ1 >= M1.
!>
LDQ1 is INTEGER, the leading dimension of Q1, and it's gotta be LDQ1 >= M1. no cap.
Q2
!> Q2 is COMPLEX*16 array, dimension (LDQ2, N)
!> The bottom part of the orthonormal basis matrix.
!>
Q2 is a COMPLEX*16 array, dimension (LDQ2, N) β the bottom part of the orthonormal basis matrix.
LDQ2
!> LDQ2 is INTEGER
!> The leading dimension of Q2. LDQ2 >= M2.
!>
LDQ2 is INTEGER, the leading dimension of Q2, and LDQ2 >= M2. periodt.
WORK
!> WORK is COMPLEX*16 array, dimension (LWORK)
!>
WORK is a COMPLEX*16 array, dimension (LWORK). that's it. that's the whole description. she works hard but she doesn't over-explain π
LWORK
!> LWORK is INTEGER
!> The dimension of the array WORK. LWORK >= N.
!>
LWORK is INTEGER β the dimension of the array WORK, and LWORK >= N. don't skimp.
INFO
!> INFO is INTEGER
!> = 0: successful exit.
!> < 0: if INFO = -i, the i-th argument had an illegal value.
!>
INFO is INTEGER and here's the tea:
= 0: successful exit π< 0: ifINFO = -i, the i-th argument had an illegal value π¨
π§ Author π§
look at all these legends:
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line 154 of file zunbdb5.f.
β Author β
Generated automatically by Doxygen for LAPACK from the source code. (so nobody hand-wrote this bit, the robots did π€β¨)
πΈ ok that's the whole page bestie, you're officially fluent in ZUNBDB5. go orthogonalize something. ily π
β LAPACK, Version 3.12.0, and this page is /home/abui.../zunbdb5.f(3). mwah π
π¦ 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