ZUNHR_COL01 tests ZUNGTSQR and ZUNHR_COL using ZLATSQR, ZGEMQRT.
Therefore, ZLATSQR (part of ZGEQR), ZGEMQRT (part of ZGEMQR)
have to be tested before this test.
M
M is INTEGER
Number of rows in test matrix.
N
N is INTEGER
Number of columns in test matrix.
MB1
MB1 is INTEGER
Number of row in row block in an input test matrix.
NB1
NB1 is INTEGER
Number of columns in column block an input test matrix.
NB2
NB2 is INTEGER
Number of columns in column block in an output test matrix.
RESULT
RESULT is DOUBLE PRECISION array, dimension (6)
Results of each of the six tests below.
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.
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|),
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.