unhr_col#
Functions
-
void cunhr_col(const INT m, const INT n, const INT nb, c64 *restrict A, const INT lda, c64 *restrict T, const INT ldt, c64 *restrict D, INT *info)#
CUNHR_COL takes an M-by-N complex matrix Q_in with orthonormal columns as input, stored in A, and performs Householder Reconstruction (HR), i.e.
reconstructs Householder vectors V(i) implicitly representing another M-by-N matrix Q_out, with the property that Q_in = Q_out*S, where S is an N-by-N diagonal matrix with diagonal entries equal to +1 or -1. The Householder vectors (columns V(i) of V) are stored in A on output, and the diagonal entries of S are stored in D. Block reflectors are also returned in T (same output format as CGEQRT).
Parameters
inmThe number of rows of the matrix A. m >= 0.
innThe number of columns of the matrix A. m >= n >= 0.
innbThe column block size to be used in the reconstruction of Householder column vector blocks in the array A and corresponding block reflectors in the array T. nb >= 1. (Note that if nb > n, then n is used instead of nb as the column block size.)
inoutAComplex*16 array, dimension (lda, n). On entry, the array A contains an M-by-N orthonormal matrix Q_in, i.e the columns of A are orthogonal unit vectors. On exit, the elements below the diagonal of A represent the unit lower-trapezoidal matrix V of Householder column vectors V(i). The unit diagonal entries of V are not stored (same format as the output below the diagonal in A from CGEQRT). The matrix T and the matrix V stored on output in A implicitly define Q_out. The elements above the diagonal contain the factor U of the “modified” LU-decomposition: Q_in - ( S ) = V * U ( 0 ) where 0 is a (M-N)-by-(M-N) zero matrix.
inldaThe leading dimension of the array A. lda >= max(1, m).
outTComplex*16 array, dimension (ldt, n). On exit, T(0:nb-1, 0:n-1) contains upper-triangular block reflectors used to define Q_out stored in compact form as a sequence of upper-triangular nb-by-nb column blocks (same format as the output T in CGEQRT).
inldtThe leading dimension of the array T. ldt >= max(1, min(nb, n)).
outDComplex*16 array, dimension min(m, n). The elements can be only plus or minus one. D(i) is constructed as D(i) = -SIGN(Q_in_i(i,i)), where 0 <= i < min(m,n), and Q_in_i is Q_in after performing i steps of “modified” Gaussian elimination.
outinfo= 0: successful exit < 0: if info = -i, the i-th argument had an illegal value
void cunhr_col(
const INT m,
const INT n,
const INT nb,
c64* restrict A,
const INT lda,
c64* restrict T,
const INT ldt,
c64* restrict D,
INT* info
);
Functions
-
void zunhr_col(const INT m, const INT n, const INT nb, c128 *restrict A, const INT lda, c128 *restrict T, const INT ldt, c128 *restrict D, INT *info)#
ZUNHR_COL takes an M-by-N complex matrix Q_in with orthonormal columns as input, stored in A, and performs Householder Reconstruction (HR), i.e.
reconstructs Householder vectors V(i) implicitly representing another M-by-N matrix Q_out, with the property that Q_in = Q_out*S, where S is an N-by-N diagonal matrix with diagonal entries equal to +1 or -1. The Householder vectors (columns V(i) of V) are stored in A on output, and the diagonal entries of S are stored in D. Block reflectors are also returned in T (same output format as ZGEQRT).
Parameters
inmThe number of rows of the matrix A. m >= 0.
innThe number of columns of the matrix A. m >= n >= 0.
innbThe column block size to be used in the reconstruction of Householder column vector blocks in the array A and corresponding block reflectors in the array T. nb >= 1. (Note that if nb > n, then n is used instead of nb as the column block size.)
inoutAComplex*16 array, dimension (lda, n). On entry, the array A contains an M-by-N orthonormal matrix Q_in, i.e the columns of A are orthogonal unit vectors. On exit, the elements below the diagonal of A represent the unit lower-trapezoidal matrix V of Householder column vectors V(i). The unit diagonal entries of V are not stored (same format as the output below the diagonal in A from ZGEQRT). The matrix T and the matrix V stored on output in A implicitly define Q_out. The elements above the diagonal contain the factor U of the “modified” LU-decomposition: Q_in - ( S ) = V * U ( 0 ) where 0 is a (M-N)-by-(M-N) zero matrix.
inldaThe leading dimension of the array A. lda >= max(1, m).
outTComplex*16 array, dimension (ldt, n). On exit, T(0:nb-1, 0:n-1) contains upper-triangular block reflectors used to define Q_out stored in compact form as a sequence of upper-triangular nb-by-nb column blocks (same format as the output T in ZGEQRT).
inldtThe leading dimension of the array T. ldt >= max(1, min(nb, n)).
outDComplex*16 array, dimension min(m, n). The elements can be only plus or minus one. D(i) is constructed as D(i) = -SIGN(Q_in_i(i,i)), where 0 <= i < min(m,n), and Q_in_i is Q_in after performing i steps of “modified” Gaussian elimination.
outinfo= 0: successful exit < 0: if info = -i, the i-th argument had an illegal value
void zunhr_col(
const INT m,
const INT n,
const INT nb,
c128* restrict A,
const INT lda,
c128* restrict T,
const INT ldt,
c128* restrict D,
INT* info
);