(S|D|C|Z)GEQR2
==============
Single, double, single complex, and double complex GEQR2.

Description
-----------
Computes the QR factorization of a matrix using an unblocked algorithm.

.. math::

    A = Q \mult R

The upper triangular matrix R is stored in A on the diagonal and above.
The matrix Q is not stored explicitly. Instead, the elements below
the diagonal of A together with TAU store Q as the product of scaled
elementary reflectors.

.. math::

    Q = H_1 \mult H_2 \mult \dots \mult H_k
    
.. math::

    H_i = I - \tau_i \mult v_i \mult \herm{v_i}


LAPACK Interface
----------------
.. code-block:: c

    void sgeqr2(const qml_long *M, const qml_long *N, float *A, const qml_long *LDA,
        float *TAU, float *WORK, qml_long *INFO);

    void dgeqr2(const qml_long *M, const qml_long *N, double *A, const qml_long *LDA,
        double *TAU, double *WORK, qml_long *INFO);

    void cgeqr2(const qml_long *M, const qml_long *N, qml_single_complex *A,
        const qml_long *LDA, qml_single_complex *TAU, qml_single_complex *WORK,
        qml_long *INFO);

    void zgeqr2(const qml_long *M, const qml_long *N, qml_double_complex *A,
        const qml_long *LDA, qml_double_complex *TAU, qml_double_complex *WORK,
        qml_long *INFO);


Arguments
---------
======   =====================================================================
M        Number of rows of A
N        Number of columns of A
A        Matrix of size M x N
LDA      Leading dimension of A
TAU      On exit contains vector of scale factors for reflectors
WORK     Work space of size N
INFO     0 on success
======   =====================================================================
