/home/abui...hr_col02.f(3)
π NAME π
okay so bestie, picture this: /home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/TESTING/LIN/zunhr_col02.f β that's the whole vibe, that's our main character file, and this page is its manual (manual name energy: it's a Library Functions Manual page, section 3, iykyk π).
β¨ SYNOPSIS β¨
π¦ Functions/Subroutines
subroutine ZUNHR_COL02 (m, n, mb1, nb1, nb2, result)β literally justZUNHR_COL02, no notes, she speaks for herself π
πΈ Function/Subroutine Documentation πΈ
subroutine ZUNHR_COL02 (integer m, integer n, integer mb1, integer nb1,
integer nb2, double precision, dimension(6) result)
π Purpose:
!>
!> ZUNHR_COL02 tests ZUNGTSQR_ROW and ZUNHR_COL inside ZGETSQRHRT
!> (which calls ZLATSQR, ZUNGTSQR_ROW and ZUNHR_COL) using ZGEMQRT.
!> Therefore, ZLATSQR (part of ZGEQR), ZGEMQRT (part of ZGEMQR)
!> have to be tested before this test.
!>
!>
so like... this subroutine is basically the test girlie π§ͺβ¨ β she tests ZUNGTSQR_ROW and ZUNHR_COL inside ZGETSQRHRT (which itself calls ZLATSQR, ZUNGTSQR_ROW and ZUNHR_COL) using ZGEMQRT. and because of that whole dependency web, ZLATSQR (part of ZGEQR) and ZGEMQRT (part of ZGEEMQR)... bestie wait, note it down exactly: ZGEMQRT (part of ZGEMQR) have to be tested before this test. so do those first, no skipping, order matters, that's the rules π«Ά
π Parameters
M
!> M is INTEGER
!> Number of rows in test matrix.
!>
M is INTEGER β it's the number of rows in the test matrix, the vertical situation π¦
N
!> N is INTEGER
!> Number of columns in test matrix.
!>
N is INTEGER β number of columns in the test matrix, slay π
MB1
!> MB1 is INTEGER
!> Number of row in row block in an input test matrix.
!>
MB1 is INTEGER β number of row in the row block in an input test matrix (yes, "row", singular, we're quoting her exactly, she's iconic π)
NB1
!> NB1 is INTEGER
!> Number of columns in column block an input test matrix.
!>
NB1 is INTEGER β number of columns in the column block an input test matrix β
NB2
!> NB2 is INTEGER
!> Number of columns in column block in an output test matrix.
!>
NB2 is INTEGER β number of columns in the column block in an output test matrix, note the output vs input distinction bestie π₯
RESULT
!> RESULT is DOUBLE PRECISION array, dimension (6)
!> Results of each of the six tests below.
!>
RESULT is a DOUBLE PRECISION array, dimension (6) β all six test results live here π
and here's the whole cast of characters, fr fr:
!> A is a m-by-n test input matrix to be factored.
!> so that A = Q_gr * ( R )
!> ( 0 ),
!>
!> Q_qr is an implicit m-by-m unitary Q matrix, the result
!> of factorization in blocked WY-representation,
!> stored in ZGEQRT output format.
!>
!> R is a n-by-n upper-triangular matrix,
!>
!> 0 is a (m-n)-by-n zero matrix,
!>
!> Q is an explicit m-by-m unitary matrix Q = Q_gr * I
!>
!> C is an m-by-n random matrix,
!>
!> D is an n-by-m random matrix.
!>
Aβ a m-by-n test input matrix to be factored, so thatA = Q_gr * ( R )/( 0 )π§Q_qrβ an implicit m-by-m unitaryQmatrix, the result of factorization in blocked WY-representation, stored inZGEQRToutput formatRβ a n-by-n upper-triangular matrix0β a (m-n)-by-n zero matrixQβ an explicit m-by-m unitary matrixQ = Q_gr * ICβ an m-by-n random matrixDβ an n-by-m random matrix
π The six tests are:
!> RESULT(1) = |R - (Q**H) * A| / ( eps * m * |A| )
!> is equivalent to test for | A - Q * R | / (eps * m * |A|),
!>
!> RESULT(2) = |I - (Q**H) * Q| / ( eps * m ),
!>
!> RESULT(3) = | Q_qr * C - Q * C | / (eps * m * |C|),
!>
!> RESULT(4) = | (Q_gr**H) * C - (Q**H) * C | / (eps * m * |C|)
!>
!> RESULT(5) = | D * Q_qr - D * Q | / (eps * m * |D|)
!>
!> RESULT(6) = | D * (Q_qr**H) - D * (Q**H) | / (eps * m * |D|),
!>
RESULT(1) = |R - (Q**H) * A| / ( eps * m * |A| )β which is equivalent to the test for| A - Q * R | / (eps * m * |A|)βRESULT(2) = |I - (Q**H) * Q| / ( eps * m )πRESULT(3) = | Q_qr * C - Q * C | / (eps * m * |C|)πRESULT(4) = | (Q_gr**H) * C - (Q**H) * C | / (eps * m * |C|)π¦RESULT(5) = | D * Q_qr - D * Q | / (eps * m * |D|)πΈRESULT(6) = | D * (Q_qr**H) - D * (Q**H) | / (eps * m * |D|)π₯
and where do those even come from? glad you asked, bestie:
!> where:
!> Q_qr * C, (Q_gr**H) * C, D * Q_qr, D * (Q_qr**H) are
!> computed using ZGEMQRT,
!>
!> Q * C, (Q**H) * C, D * Q, D * (Q**H) are
!> computed using ZGEMM.
!>
so: Q_qr * C, (Q_gr**H) * C, D * Q_qr, D * (Q_qr**H) are all computed using ZGEMQRT β¨ β and Q * C, (Q**H) * C, D * Q, D * (Q**H) are computed using ZGEMM. two different engines, two different vibes, both valid π
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line 119 of file zunhr_col02.f. π
π« Author π«
Generated automatically by Doxygen for LAPACK from the source code β yes she was built by the robots, no cap π€π
and that's the whole page, bestie!! π«Ά LAPACK, Version 3.12.0, /home/abui...hr_col02.f(3) β mwah, periodt π
ππ
π¦ 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