11 #include "common_magma.h"
13 #define A(i, j) (a + (j)*lda + (i))
14 #define dA(i, j) (da+ (j)*ldda + (i))
18 #if (defined(PRECISION_s) || defined(PRECISION_d))
19 #define magma_cgemm magmablas_cgemm
25 cuFloatComplex *a,
magma_int_t lda,
float *d,
float *e,
26 cuFloatComplex *tauq, cuFloatComplex *taup,
148 cuFloatComplex *da, *
dwork;
153 static cuFloatComplex ws;
163 lwkopt = (m + n) * nb;
165 lquery = (lwork == -1);
173 }
else if (lda <
max(1,m)) {
175 }
else if ( (lwork <
max(
max(1, m), n)) && (! lquery) ) {
193 fprintf (stderr,
"!!!! device memory allocation error in cgebrd\n" );
197 dwork = da + (n)*ldda;
210 for (i=0; i< (minmn - nx); i += nb) {
227 A(i, i), lda,
dA(i, i), ldda,
228 d+i, e+i, tauq+i, taup+i,
229 work, ldwrkx, dwork, ldwrkx,
230 work+(ldwrkx*nb), ldwrky, dwork+(ldwrkx*nb), ldwrky);
240 work + (ldwrkx+1)*nb, ldwrky,
241 dwork + (ldwrkx+1)*nb, ldwrky );
245 c_neg_one,
dA(i+nb, i ), ldda,
246 dwork+(ldwrkx+1)*nb, ldwrky,
247 c_one,
dA(i+nb, i+nb), ldda);
251 c_neg_one, dwork+nb, ldwrkx,
253 c_one,
dA( i+nb, i+nb ), ldda);
258 for (j = i; j < jmax; ++j) {
264 for (j = i; j < jmax; ++j) {
276 if ( 0 < (minmn-nx) )
280 A(i, i), &lda, d+i, e+i,
281 tauq+i, taup+i, work, &lwork, &iinfo);