Example #1
0
void (vsip_msin_d)(
  const vsip_mview_d *a,
  const vsip_mview_d *r) {

  { 
    vsip_length n_mj, /* major length */
                n_mn; /* minor length */
    vsip_stride ast_mj, ast_mn,
                rst_mj, rst_mn;
    vsip_scalar_d *ap = (a->block->array) + a->offset * a->block->rstride,
                  *rp = (r->block->array) + r->offset * r->block->rstride;
    vsip_scalar_d *ap0 = ap,
                  *rp0 = rp;
    /* pick direction dependent on output */
    if(r->row_stride < r->col_stride){
           n_mj = r->row_length; n_mn = r->col_length;
           rst_mj = r->row_stride; rst_mn = r->col_stride;
           ast_mj = a->row_stride; ast_mn = a->col_stride;
           rst_mj *= r->block->rstride; rst_mn *= r->block->rstride;
           ast_mj *= a->block->rstride; ast_mn *= a->block->rstride;
    } else {
           n_mn = r->row_length; n_mj = r->col_length;
           rst_mn = r->row_stride; rst_mj = r->col_stride;
           ast_mn = a->row_stride; ast_mj = a->col_stride;
           rst_mn *= r->block->rstride; rst_mj *= r->block->rstride;
           ast_mn *= a->block->rstride; ast_mj *= a->block->rstride;
    }
    /*end define*/
    if(ap == rp){ /* inplace */
       while(n_mn-- > 0){
          vsip_length n = n_mj;
          while(n-- >0){
            *rp = VSIP_SIN_D(*rp);
             rp += rst_mj;
          }
          rp0 += rst_mn;
          rp = rp0;
       }
    } else {
       while(n_mn-- > 0){
          vsip_length n = n_mj;
          while(n-- >0){
            *rp = VSIP_SIN_D(*ap);
            ap += ast_mj;  rp += rst_mj;
          }
          ap0 += ast_mn; rp0 += rst_mn;
          ap = ap0; rp = rp0;
    }
   }
  }
  return;
}
Example #2
0
void vsip_vrect_d(
                  const vsip_vview_d* r,
                  const vsip_vview_d* t,
                  const vsip_cvview_d* a) {
   
   vsip_length n = r->length;
   vsip_stride 
   cast = a->block->cstride,
   rrst = r->block->rstride,
   trst = r->block->rstride;
   vsip_scalar_d 
   *apr = (vsip_scalar_d*) ((a->block->R->array) + cast * a->offset),
   *rp  = (vsip_scalar_d*) ((r->block->array) + rrst * r->offset),
   *tp  = (vsip_scalar_d*) ((t->block->array) + trst * t->offset);
   vsip_scalar_d *api = (vsip_scalar_d*) ((a->block->I->array) + cast * a->offset);
   vsip_scalar_d  temp = 0;
   vsip_stride 
   ast = (cast * a->stride),
   rst = rrst * r->stride,
   tst = trst * t->stride;
   while(n-- > 0){
      temp = *rp * VSIP_SIN_D(*tp);
      *apr = *rp * VSIP_COS_D(*tp);
      *api = temp;
      apr += ast; api += ast; 
      rp += rst; 
      tp += tst;
   }
}
void (vsip_meuler_d)(
  const vsip_mview_d *r,
  const vsip_cmview_d *a) {
  { 
    vsip_length n_mj, /* major length */
                n_mn; /* minor length */
    vsip_stride ast_mj, ast_mn,
                rst_mj, rst_mn;
    vsip_scalar_d *ap_r = (a->block->R->array) + a->offset * a->block->cstride,
                  *rp_r = (r->block->array) + r->offset * r->block->rstride;
    vsip_scalar_d *ap_i = (a->block->I->array) + a->offset * a->block->cstride;
    vsip_scalar_d *ap0_r = ap_r,
                  *rp0_r = rp_r;
    vsip_scalar_d *ap0_i = ap_i;
    vsip_scalar_d temp;
    /* pick direction dependent on output */
    if(a->row_stride < a->col_stride){
           n_mj = r->row_length; n_mn = r->col_length;
           rst_mj = r->row_stride; rst_mn = r->col_stride;
           ast_mj = a->row_stride; ast_mn = a->col_stride;
           rst_mj *= r->block->rstride; rst_mn *= r->block->rstride;
           ast_mj *= a->block->cstride; ast_mn *= a->block->cstride;
    } else {
           n_mn = r->row_length; n_mj = r->col_length;
           rst_mn = r->row_stride; rst_mj = r->col_stride;
           ast_mn = a->row_stride; ast_mj = a->col_stride;
           rst_mn *= r->block->rstride; rst_mj *= r->block->rstride;
           ast_mn *= a->block->cstride; ast_mj *= a->block->cstride;
    }
    /* end define */
    while(n_mn-- > 0){
       int n = n_mj;
       while(n-- >0){
          temp  = VSIP_COS_D(*rp_r);
          *ap_i = VSIP_SIN_D(*rp_r);
          *ap_r = temp;
          rp_r += rst_mj;
          ap_i += ast_mj; ap_r += ast_mj;
       }
       ap0_r += ast_mn; rp0_r += rst_mn;
       ap_r = ap0_r; rp_r = rp0_r;
       ap0_i += ast_mn; 
       ap_i = ap0_i; 
    }
  }
  return;
}
Example #4
0
void (vsip_vsin_d)(
  const vsip_vview_d *a,
  const vsip_vview_d *r) {
  { 
     /*define variables*/
      /* register */ vsip_length n = r->length;
      /* register */ vsip_stride ast = a->stride * a->block->rstride,
                                 rst = r->stride * r->block->rstride;
      vsip_scalar_d *ap = (a->block->array) + a->offset * a->block->rstride,
                    *rp = (r->block->array) + r->offset * r->block->rstride;
      /*end define*/
      while(n-- > 0){
         *rp = VSIP_SIN_D(*ap);
         ap += ast; rp += rst;
      }
   }
}
Example #5
0
vsip_cscalar_d vsip_rect_d(
  vsip_scalar_d r, vsip_scalar_d t) {
  return vsip_cmplx_d(r * VSIP_COS_D(t), r * VSIP_SIN_D(t)); 
}