/***************************************************************************//** * TYPE 3-BAND Lower-columnwise-Householder ***************************************************************************/ extern "C" void magma_dsbtype3cb(magma_int_t n, magma_int_t nb, double *A, magma_int_t lda, double *V, magma_int_t ldv, double *TAU, magma_int_t st, magma_int_t ed, magma_int_t sweep, magma_int_t Vblksiz, magma_int_t wantz, double *work) { magma_int_t len; magma_int_t vpos, taupos; //magma_int_t blkid, tpos; if ( wantz == 0 ) { vpos = (sweep%2)*n + st; taupos = (sweep%2)*n + st; } else { magma_bulge_findVTAUpos(n, nb, Vblksiz, sweep, st, ldv, &vpos, &taupos); //findVTpos(n, nb, Vblksiz, sweep, st, &vpos, &taupos, &tpos, &blkid); } len = ed-st+1; /* Apply left and right on A(st:ed,st:ed)*/ magma_dlarfy(len, A(st,st), lda-1, V(vpos), TAU(taupos), work); return; }
extern "C" void magma_dsbtype1cb(magma_int_t n, magma_int_t nb, double *A, magma_int_t lda, double *V, magma_int_t ldv, double *TAU, magma_int_t st, magma_int_t ed, magma_int_t sweep, magma_int_t Vblksiz, magma_int_t wantz, double *work) { magma_int_t len; magma_int_t vpos, taupos; //magma_int_t blkid, tpos; magma_int_t ione = 1; double c_one = MAGMA_D_ONE; /* find the pointer to the Vs and Ts as stored by the bulgechasing * note that in case no eigenvector required V and T are stored * on a vector of size n * */ if ( wantz == 0 ) { vpos = (sweep%2)*n + st; taupos = (sweep%2)*n + st; } else { magma_bulge_findVTAUpos(n, nb, Vblksiz, sweep, st, ldv, &vpos, &taupos); //findVTpos(n, nb, Vblksiz, sweep, st, &vpos, &taupos, &tpos, &blkid); } len = ed-st+1; *(V(vpos)) = c_one; //magma_int_t len2 = len-1; //blasf77_dcopy( &len2, A(st+1, st-1), &ione, V(vpos+1), &ione ); memcpy( V(vpos+1), A(st+1, st-1), (len-1)*sizeof(double) ); memset( A(st+1, st-1), 0, (len-1)*sizeof(double) ); /* Eliminate the col at st-1 */ lapackf77_dlarfg( &len, A(st, st-1), V(vpos+1), &ione, TAU(taupos) ); /* Apply left and right on A(st:ed,st:ed) */ magma_dlarfy(len, A(st,st), lda-1, V(vpos), TAU(taupos), work); }