orhr_col#

Functions

void sorhr_col(
    const INT           m,
    const INT           n,
    const INT           nb,
          f32* restrict A,
    const INT           lda,
          f32* restrict T,
    const INT           ldt,
          f32* restrict D,
          INT*          info
);
void sorhr_col(const INT m, const INT n, const INT nb, f32 *restrict A, const INT lda, f32 *restrict T, const INT ldt, f32 *restrict D, INT *info)#

SORHR_COL takes an M-by-N real 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.

Parameters

in
m

The number of rows of the matrix A. m >= 0.

in
n

The number of columns of the matrix A. m >= n >= 0.

in
nb

The column block size to be used in the reconstruction of Householder column vector blocks. nb >= 1.

inout
A

Double precision array, dimension (lda, n). On entry, the M-by-N orthonormal matrix Q_in. On exit, below diagonal contains the unit lower-trapezoidal matrix V of Householder vectors, above diagonal contains U.

in
lda

The leading dimension of the array A. lda >= max(1, m).

out
T

Double precision array, dimension (ldt, n). On exit, contains upper-triangular block reflectors.

in
ldt

The leading dimension of the array T. ldt >= max(1, min(nb, n)).

out
D

Double precision array, dimension min(m, n). The diagonal elements of the sign matrix S.

out
info

  • = 0: successful exit

  • < 0: if info = -i, the i-th argument had an illegal value

Functions

void dorhr_col(
    const INT           m,
    const INT           n,
    const INT           nb,
          f64* restrict A,
    const INT           lda,
          f64* restrict T,
    const INT           ldt,
          f64* restrict D,
          INT*          info
);
void dorhr_col(const INT m, const INT n, const INT nb, f64 *restrict A, const INT lda, f64 *restrict T, const INT ldt, f64 *restrict D, INT *info)#

DORHR_COL takes an M-by-N real 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.

Parameters

in
m

The number of rows of the matrix A. m >= 0.

in
n

The number of columns of the matrix A. m >= n >= 0.

in
nb

The column block size to be used in the reconstruction of Householder column vector blocks. nb >= 1.

inout
A

Double precision array, dimension (lda, n). On entry, the M-by-N orthonormal matrix Q_in. On exit, below diagonal contains the unit lower-trapezoidal matrix V of Householder vectors, above diagonal contains U.

in
lda

The leading dimension of the array A. lda >= max(1, m).

out
T

Double precision array, dimension (ldt, n). On exit, contains upper-triangular block reflectors.

in
ldt

The leading dimension of the array T. ldt >= max(1, min(nb, n)).

out
D

Double precision array, dimension min(m, n). The diagonal elements of the sign matrix S.

out
info

  • = 0: successful exit

  • < 0: if info = -i, the i-th argument had an illegal value