14 #include "common_magma.h"
19 #define A(i, j) (a+(j)*lda + (i))
20 #define W(i, j) (w+(j)*ldw + (i))
22 #define dA(i, j) (da+(j)*ldda + (i))
23 #define dW(i, j) (dw+(j)*lddw + (i))
28 float *e, cuFloatComplex *tau,
158 char uplo_[2] = {
uplo, 0};
166 #if defined(PRECISION_z) || defined(PRECISION_c)
174 static cuFloatComplex alpha;
176 cuFloatComplex *
f = (cuFloatComplex *)malloc(n*
sizeof(cuFloatComplex ));
182 static cudaStream_t stream;
188 for (i = n-1; i >= n - nb ; --i) {
195 #if defined(PRECISION_z) || defined(PRECISION_c)
198 blasf77_cgemv(
"No transpose", &i_1, &i_n, &c_neg_one,
A(0, i+1), &lda,
199 W(i, iw+1), &ldw, &c_one,
A(0, i), &ione);
200 #if defined(PRECISION_z) || defined(PRECISION_c)
204 blasf77_cgemv(
"No transpose", &i_1, &i_n, &c_neg_one,
W(0, iw+1), &ldw,
205 A(i, i+1), &lda, &c_one,
A(0, i), &ione);
206 #if defined(PRECISION_z) || defined(PRECISION_c)
225 dA(0, i), ione, c_zero,
dW(0, iw), ione);
230 W(0, iw) , ldw, stream );
235 A(0, i), &ione, &c_zero,
W(i+1, iw), &ione);
243 blasf77_cgemv(
"No transpose", &i, &i_n, &c_neg_one,
A(0, i+1), &lda,
244 W(i+1, iw), &ione, &c_one,
W(0, iw), &ione);
247 A(0, i), &ione, &c_zero,
W(i+1, iw), &ione);
249 blasf77_cgemv(
"No transpose", &i, &i_n, &c_neg_one,
W(0, iw+1), &ldw,
250 W(i+1, iw), &ione, &c_one,
W(0, iw), &ione);
255 #if defined(PRECISION_z) || defined(PRECISION_c)
259 alpha = tau[i - 1] * -.5f * value;
261 alpha = tau[i - 1] * -.5f *
blasf77_cdotc(&i,
W(0, iw), &ione,
A(0, i), &ione);
271 for (i = 0; i < nb; ++i)
276 #if defined(PRECISION_z) || defined(PRECISION_c)
279 blasf77_cgemv(
"No transpose", &i_n, &i, &c_neg_one,
A(i, 0), &lda,
280 W(i, 0), &ldw, &c_one,
A(i, i), &ione);
281 #if defined(PRECISION_z) || defined(PRECISION_c)
285 blasf77_cgemv(
"No transpose", &i_n, &i, &c_neg_one,
W(i, 0), &ldw,
286 A(i, 0), &lda, &c_one,
A(i, i), &ione);
287 #if defined(PRECISION_z) || defined(PRECISION_c)
304 magma_chemv(
MagmaLower, i_n, c_one,
dA(i+1, i+1), ldda,
dA(i+1, i), ione, c_zero,
310 W(i+1, i), ldw, stream );
313 A(i+1, i), &ione, &c_zero,
W(0, i), &ione);
315 blasf77_cgemv(
"No transpose", &i_n, &i, &c_neg_one,
A(i+1, 0), &lda,
316 W(0, i), &ione, &c_zero, f, &ione);
319 A(i+1, i), &ione, &c_zero,
W(0, i), &ione);
327 blasf77_cgemv(
"No transpose", &i_n, &i, &c_neg_one,
W(i+1, 0), &ldw,
328 W(0, i), &ione, &c_one,
W(i+1, i), &ione);
331 #if defined(PRECISION_z) || defined(PRECISION_c)
339 A(i +1, i), ione, &value);
342 alpha = tau[i]* -.5f * value;
344 alpha = tau[i]* -.5f*
blasf77_cdotc(&i_n,
W(i+1,i), &ione,
A(i+1, i), &ione);