static void VI_csolve_lt_d( const vsip_cmview_d *R, const vsip_cmview_d *B) { vsip_length N = R->row_length; vsip_cmview_d XX = *B; vsip_cmview_d *X = &XX; vsip_cvview_d xx, rr; vsip_cvview_d *x = VI_cmrowview_d(X,(vsip_index)0,&xx); vsip_cvview_d *r_d = VI_cmrowview_d(R,(vsip_index) 0,&rr); vsip_cvview_d rr_m = rr; vsip_cvview_d *r_m = &rr_m; vsip_stride d_s = R->row_stride + R->col_stride; r_d->length = 1; r_m->length = 0; X->col_length = 1; vsip_csvmul_d(vsip_crecip_d(vsip_conj_d(vsip_cvget_d(r_d,0))),x,x); N--; while(N-- >0){ r_d->offset += d_s; r_m->length++; r_m->offset += R->col_stride; x->offset += X->col_stride; VI_cvjsubvmprodIP_d(r_m,X,x); vsip_csvmul_d(vsip_crecip_d(vsip_conj_d(vsip_cvget_d(r_d,0))),x,x); X->col_length++; } return; }
static void VU_cmconjIP_d(vsip_cmview_d *A) { vsip_length m = vsip_cmgetcollength_d(A); vsip_length n = vsip_cmgetrowlength_d(A); vsip_stride i,j; for(i=0; i<m; i++) for(j=0; j<n; j++) vsip_cmput_d(A,i,j,vsip_conj_d(vsip_cmget_d(A,i,j))); }
void (vsip_CONJ_d)(vsip_cscalar_d x, vsip_cscalar_d* y) { *y = vsip_conj_d(x); } /* *y = conj(x) */
vsip_cscalar_d (vsip_crecip_d)( vsip_cscalar_d x) { /* 1/x */ return vsip_crdiv_d( vsip_conj_d(x), vsip_cmagsq_d(x)); }