ormtr (USM Version)
Multiplies a real matrix by the real orthogonal matrix
Q
determined
by the sytrd
(USM Version) function. This routine belongs to the oneapi::mkl::lapack
namespace.Description
The routine multiplies a real matrix
C
by Q
or
Q
T
, where Q
is the orthogonal matrix Q
formed by
sytrd (USM Version) when
reducing a real symmetric matrix A
to tridiagonal form:
A = Q*T*QT
. Use this routine after a call to sytrd (USM Version).Depending on the parameters side and trans, the routine can form one
of the matrix products
Q*C
, QT*C
, C*Q
, or C*QT
(overwriting the result on C
).API
Syntax
namespace oneapi::mkl::lapack {
cl::sycl::event ormtr(cl::sycl::queue &queue,
mkl::side side,
mkl::uplo uplo,
mkl::transpose trans,
std::int64_t m,
std::int64_t n,
T *a,
std::int64_t lda,
T *tau,
T *c,
std::int64_t ldc,
T *scratchpad,
std::int64_t scratchpad_size,
const std::vector<cl::sycl::event> &events = {})
}
ormtr
(USM version) supports the following precisions and
devices:T | Devices supported |
---|---|
float | Host and CPU |
double | Host and CPU |
Input Parameters
In the descriptions below,
r
denotes the order of Q
:r = m | if side = side::left |
r = n | if side = side::right |
- queue
- Device queue where calculations will be performed.
- side
- Must be eitherside::leftorside::right.Ifside = side::left,QorQTis applied toCfrom the left.Ifside = side::right,QorQTis applied toCfrom the right.
- uplo
- trans
- Must be eithertranspose::nontransortranspose::trans.Iftrans = transpose::nontrans, the routine multipliesCbyQ.Iftrans = transpose::trans, the routine multipliesCbyQT.
- m
- The number of rows in the matrixC(m ≥ 0).
- n
- The number of columns in the matrixC(n ≥ 0).
- a
- The pointer to memory returned by sytrd (USM Version).
- lda
- The leading dimension of a(max(1, r) ≤ lda).
- tau
- The pointer to tau returned by sytrd (USM Version). The dimension of tau must be at leastmax(1, r-1).
- c
- The pointer to memory containing the matrixC. The second dimension of c must be at leastmax(1, n).
- ldc
- The leading dimension of c(max(1, n) ≤ ldc).
- scratchpad
- Pointer to 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 typeT. Size should not be less than the value returned by the ormtr_scratchpad_size function.
- events
- List of events to wait for before starting computation. Defaults to empty list.
Output Parameters
- c
- Overwritten byQ*C,QT*C,C*Q, orC*QT(as specified by side and trans).
Exceptions
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. |
Return Values
Output event to wait on to ensure computation is complete.