(S|D)ORGQR
==========
Single and double ORGQR.

Description
-----------
Generates an orthonormal matrix given a set of elementary reflectors
and scale factors.

.. math::

    Q = H_1 \mult H_2 \mult \dots \mult H_K

The elementary reflectors and scale factors are expected in the same
form as generated by :doc:`GEQRF<geqrf>`.

.. math::

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


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

    void sorgqr(const qml_long *M, const qml_long *N, const qml_long *K, float *A,
        const qml_long *LDA, float *TAU, float *WORK, const qml_long *LWORK,
        qml_long *INFO);
    
    void dorgqr(const qml_long *M, const qml_long *N, const qml_long *K, double *A,
        const qml_long *LDA, double *TAU, double *WORK, const qml_long *LWORK,
        qml_long *INFO);


Arguments
---------
======   =====================================================================
M        Number of rows of Q
N        Number of columns of Q (M >= N)
K        Number of elementary reflectors (N >= K)
A        Matrix of size M x N containing reflectors in columns, overwritten
         on exit with Q
LDA      Leading dimension of A
TAU      Vector of scale factors for reflectors
WORK     Work space of size at least LWORK
LWORK    Size of work space (-1 to query)
INFO     0 on success
======   =====================================================================
