It looks like the documentation magma_dgeqrf functions is not up-to-date:

- Code: Select all
`A (input/output) DOUBLE_PRECISION array on the GPU, dimension (LDDA,N)`

On entry, the M-by-N matrix A.

On exit, the elements on and above the diagonal of the array

contain the min(M,N)-by-N upper trapezoidal matrix R (R is

upper triangular if m >= n); the elements below the diagonal,

with the array TAU, represent the orthogonal matrix Q as a

product of min(m,n) elementary reflectors (see Further

Details).

It seems that the upper part of the matrix isn't R contrary to what is stated in the documentation.

magma_dgeqrf3 documentation has the same kind of issue but it has a correct description:

DGEQRF3 computes a QR factorization of a DOUBLE_PRECISION M-by-N matrix A:

A = Q * R. This version stores the triangular matrices T used in

the block QR factorization so that Q can be applied directly (i.e.,

without being recomputed) later. As a result, the application

of Q is much faster. The upper triangular matrices for V have 0s

in them and the corresponding parts of the upper triangular R are

stored separately.

The issue is of course not major but I prefer to report it if someone else wonders why he doesn't get R as expected.

Regards,

Rémi