void (vsip_masin_f)( const vsip_mview_f *a, const vsip_mview_f *r) { { vsip_length n_mj, /* major length */ n_mn; /* minor length */ vsip_stride ast_mj, ast_mn, rst_mj, rst_mn; vsip_scalar_f *ap = (a->block->array) + a->offset * a->block->rstride, *rp = (r->block->array) + r->offset * r->block->rstride; vsip_scalar_f *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){ int n = n_mj; while(n-- >0){ *rp = VSIP_ASIN_F(*rp); rp += rst_mj; } rp0 += rst_mn; rp = rp0; } } else { while(n_mn-- > 0){ int n = n_mj; while(n-- >0){ *rp = VSIP_ASIN_F(*ap); ap += ast_mj; rp += rst_mj; } ap0 += ast_mn; rp0 += rst_mn; ap = ap0; rp = rp0; } } } return; }
void (vsip_vasin_f)( const vsip_vview_f *a, const vsip_vview_f *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_f *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_ASIN_F(*ap); ap += ast; rp += rst; } } }