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; }
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; }
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; } } }
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)); }