.. _ungqr: ungqr ===== Generates the complex unitary matrix Q of the QR factorization formed by ``geqrf``. This routine belongs to the ``oneapi::mkl::lapack`` namespace. .. contents:: :local: :depth: 1 Description *********** The routine generates the whole or part of ``m``-by-``m`` unitary matrix ``Q`` of the ``QR`` factorization formed by the routines :ref:`geqrf`. Usually ``Q`` is determined from the ``QR`` factorization of an ``m`` by ``p`` matrix ``A`` with ``m≥p``. To compute the whole matrix ``Q``, use: .. code-block:: cpp mkl::ungqr(queue, m, m, p, a, lda, tau, ...) To compute the leading ``p`` columns of ``Q`` (which form an orthonormal basis in the space spanned by the columns of ``A``): .. code-block:: cpp mkl::ungqr(queue, m, p, p, a, lda, tau, ...) To compute the matrix ``Q``\ :sup:`k` of the ``QR`` factorization of the leading ``k`` columns of the matrix ``A``: .. code-block:: cpp mkl::ungqr(queue, m, m, k, a, lda, tau, ...) To compute the leading ``k`` columns of ``Q``\ :sup:`k` (which form an orthonormal basis in the space spanned by the leading ``k`` columns of the matrix ``A``): .. code-block:: cpp mkl::ungqr(queue, m, k, k, a, lda, tau, ...) API *** Syntax ------ .. code-block:: cpp namespace oneapi::mkl::lapack { void ungqr(cl::sycl::queue &queue, std::int64_t m, std::int64_t n, std::int64_t k, cl::sycl::buffer &a, std::int64_t lda, cl::sycl::buffer &tau, cl::sycl::buffer &scratchpad, std::int64_t scratchpad_size) } ungqr`` supports the following precisions and devices: .. list-table:: :header-rows: 1 * - T - Devices supported * - ``std::complex`` - Host, CPU, and GPU * - ``std::complex`` - Host, CPU, and GPU Input Parameters ---------------- queue Device queue where calculations will be performed. m The number of rows in the matrix ``A`` (``0≤m``). n The number of columns in the matrix ``A`` (``0≤n``). k The number of elementary reflectors whose product defines the matrix ``Q`` (``0≤k≤n``). a Buffer holding the result of :ref:`geqrf`. lda The leading dimension of a (``lda≤m``). tau Buffer holding the result of :ref:`geqrf`. scratchpad Buffer holding scratchpad memory to be used by the routine for storing intermediate results. scratchpad_size Size of scratchpad memory as a number of floating point elements of type ``T``. Size should not be less than the value returned by the :ref:`ungqr_scratchpad_size` function. Output Parameters ----------------- a Overwritten by n leading columns of the m-by-m unitary matrix ``Q``. Exceptions ---------- .. tabularcolumns:: |\Y{0.3}|\Y{0.7}| .. list-table:: :header-rows: 1 * - Exception - Description * - ``mkl::lapack::exception`` - This exception is thrown when problems occur during calculations. You can obtain the info code of the problem using the info() method of the exception object: If ``info = -i``, the ``i``-th parameter had an illegal value. If ``info`` is equal to the value passed as scratchpad size, and detail() returns non-zero, then the passed scratchpad has an insufficient size, and the required size should not be less than the value returned by the detail() method of the exception object.