Skip to main content

cusolverDnDormtr

Function cusolverDnDormtr 

Source
pub unsafe extern "C" fn cusolverDnDormtr(
    handle: cusolverDnHandle_t,
    side: cublasSideMode_t,
    uplo: cublasFillMode_t,
    trans: cublasOperation_t,
    m: c_int,
    n: c_int,
    A: *mut f64,
    lda: c_int,
    tau: *mut f64,
    C: *mut f64,
    ldc: c_int,
    work: *mut f64,
    lwork: c_int,
    info: *mut c_int,
) -> cusolverStatus_t
Expand description

These helper functions calculate the size of work buffers needed.

The S and D data types are real valued single and double precision, respectively.

The C and Z data types are complex valued single and double precision, respectively.

This function overwrites $m \times n$ matrix C by: $$ C = \begin{cases} \operatorname{op}(Q) * C & \text{if } side = \text{CUBLAS_SIDE_LEFT} \ C * \operatorname{op}(Q) & \text{if } side = \text{CUBLAS_SIDE_RIGHT} \end{cases} $$

where Q is a unitary matrix formed by a sequence of elementary reflection vectors from sytrd.

The operation on Q is defined by: $$ \operatorname{op}(Q) = \begin{cases} Q & \text{if } transa = \text{CUBLAS_OP_N} \ Q^T & \text{if } transa = \text{CUBLAS_OP_T} \ Q^H & \text{if } transa = \text{CUBLAS_OP_C} \end{cases} $$

The user has to provide working space which is pointed by input parameter work. The input parameter lwork is size of the working space, and it is returned by ormtr_bufferSize(). Please note that the size in bytes of the working space is equal to sizeof(<type>) * lwork.

If output parameter devInfo = -i (less than zero), the i-th parameter is wrong (not counting handle).