#include "common_magma.h"
Go to the source code of this file.
Functions |
| magma_int_t | magma_sormtr (char side, char uplo, char trans, magma_int_t m, magma_int_t n, float *a, magma_int_t lda, float *tau, float *c, magma_int_t ldc, float *work, magma_int_t lwork, magma_int_t *info) |
Function Documentation
| magma_int_t magma_sormtr |
( |
char |
side, |
|
|
char |
uplo, |
|
|
char |
trans, |
|
|
magma_int_t |
m, |
|
|
magma_int_t |
n, |
|
|
float * |
a, |
|
|
magma_int_t |
lda, |
|
|
float * |
tau, |
|
|
float * |
c, |
|
|
magma_int_t |
ldc, |
|
|
float * |
work, |
|
|
magma_int_t |
lwork, |
|
|
magma_int_t * |
info |
|
) |
| |
Definition at line 17 of file sormtr.cpp.
References __func__, lapackf77_lsame, MAGMA_S_ONE, MAGMA_S_SET2REAL, magma_sormql(), magma_sormqr(), magma_xerbla(), max, side, trans, and uplo.
{
char side_[2] = {
side, 0};
char uplo_[2] = {
uplo, 0};
char trans_[2] = {
trans, 0};
long int left, upper, lquery;
*info = 0;
lquery = lwork == -1;
if (left) {
nq = m;
nw = n;
} else {
nq = n;
nw = m;
}
*info = -1;
*info = -2;
*info = -3;
} else if (m < 0) {
*info = -4;
} else if (n < 0) {
*info = -5;
}
else if (lda <
max(1,nq)) {
*info = -7;
}
else if (ldc <
max(1,m)) {
*info = -10;
}
else if (lwork <
max(1,nw) && ! lquery) {
*info = -12;
}
if (*info == 0)
{
nb = 32;
}
if (*info != 0) {
return *info;
}
else if (lquery) {
return *info;
}
if (m == 0 || n == 0 || nq == 1) {
return *info;
}
if (left) {
mi = m - 1;
ni = n;
} else {
mi = m;
ni = n - 1;
}
if (upper)
{
i__2 = nq - 1;
c, ldc,
work, lwork, &iinfo);
}
else
{
if (left) {
i1 = 1;
i2 = 0;
} else {
i1 = 0;
i2 = 1;
}
i__2 = nq - 1;
&
c[i1 + i2 * ldc], ldc,
work, lwork, &iinfo);
}
return *info;
}