Beispiel #1
0
static void VI_solve_lt_d(
              vsip_mview_d *R,
              vsip_scalar_d alpha,
              vsip_mview_d *B)
{
   vsip_length N = R->row_length;
   vsip_mview_d XX = *B;
   vsip_mview_d *X = &XX;
   vsip_vview_d xx, rr;
   vsip_vview_d *x = VI_mrowview_d(X,(vsip_index)0,&xx);
   vsip_vview_d *r_d = VI_mrowview_d(R,(vsip_index) 0,&rr);
   vsip_vview_d rr_m = rr;
   vsip_vview_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;
   if(alpha == 0) return;
   vsip_svmul_d(alpha,x,x);
   vsip_svmul_d((vsip_scalar_d) 1.0/(VI_VGET_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; 
      vsip_svmul_d(alpha,x,x);
      VI_vsubvmprodIP_d(r_m,X,x);
      vsip_svmul_d((vsip_scalar_d) 1.0/(VI_VGET_D(r_d,0)),x,x);
      X->col_length++; 
   }
   return;
}
Beispiel #2
0
void vsip_mcumsum_d(
   const vsip_mview_d *a,
   vsip_major major,
   const vsip_mview_d *r) {
   {
      vsip_vview_d *va,vaa;
      vsip_vview_d *vr,vrr;
      vsip_index i;
      vsip_length m = a->col_length;
      vsip_length n = a->row_length;
      va = &vaa; vr = &vrr;
      if(major == VSIP_ROW){
         for(i=0; i<m; i++){
            VI_mrowview_d(a,i,va);
            VI_mrowview_d(r,i,vr);
            VI_vcumsum_d(va,vr);
         }
      } else { /* must be VSIP_COL */
         for(i=0; i<n; i++){
            VI_mcolview_d(a,i,va);
            VI_mcolview_d(r,i,vr);
            VI_vcumsum_d(va,vr);
         }
      }
   }
   return;
}
Beispiel #3
0
void vsip_mpolar_d(const vsip_cmview_d* a, const vsip_mview_d* r, const vsip_mview_d* t){
    vsip_index i;
    vsip_vview_d rv; vsip_vview_d tv; vsip_cvview_d av;
    if(a->row_stride < a->col_stride){
        for(i=0; i < a->col_length; i++){
            VI_mrowview_d(r,i,&rv); VI_mrowview_d(t,i,&tv);VI_cmrowview_d(a,i,&av);
            vpolar_d(&av,&rv,&tv);
        }
    } else {
        for(i=0; i < a->col_length; i++){
            VI_mcolview_d(r,i,&rv); VI_mcolview_d(t,i,&tv);VI_cmcolview_d(a,i,&av);
            vpolar_d(&av,&rv,&tv);
        }
    }
}