#include <stdio.h> #include "vsip.h" #define L 7 /* length */ int main() { double data[L]; /*a user-created data space */ int i; vsip_vview_d* ramp; vsip_vview_d* output; vsip_init((void *)0); ramp = vsip_vcreate_d(L, VSIP_MEM_NONE); output = vsip_vbind_d(vsip_blockbind_d(data,L, VSIP_MEM_NONE),0,1,L); /*compute a ramp from zero to L-1*/ vsip_vramp_d(0.0, 1.0, ramp); /* admit the user block with no update */ vsip_blockadmit_d(vsip_vgetblock_d(output),VSIP_FALSE); /*compute the hyperbolic cosine value */ vsip_vcosh_d(ramp, output); /* release the user block with update */ vsip_blockrelease_d(vsip_vgetblock_d(output),VSIP_TRUE); /*print it */ for(i=0; i<L; i++) printf("%f ",data[i]); printf("\n"); /*destroy the vector views and any associated blocks */ vsip_blockdestroy_d(vsip_vdestroy_d(ramp)); vsip_blockdestroy_d(vsip_vdestroy_d(output)); vsip_finalize((void *)0); return 0; }
int main() { double data[N]; /* a user-created data space */ int i; vsip_vview_d* a; vsip_vview_d* x; vsip_init((void *)0); a = vsip_vbind_d(vsip_blockbind_d(data,N, VSIP_MEM_NONE),0,1,N); x = vsip_vcreate_d(N, VSIP_MEM_NONE); vsip_vramp_d(0.0, 1.0, x); /* admit the user block with no update */ vsip_blockadmit_d(vsip_vgetblock_d(a),VSIP_FALSE); /*compute the 10^x value */ vsip_vexp10_d(x, a); /* release the user block with update */ vsip_blockrelease_d(vsip_vgetblock_d(a),VSIP_TRUE); /*print it */ for(i=0; i<N; i++) printf("%f ",data[i]); printf("\n"); /*destroy the vector views and any associated blocks */ vsip_blockdestroy_d(vsip_vdestroy_d(x)); vsip_blockdestroy_d(vsip_vdestroy_d(a)); vsip_finalize((void *)0); return 0; }
vsip_vview_d* (vsip_mrowview_d)( const vsip_mview_d* v, vsip_index i) { return vsip_vbind_d( v->block, v->offset + i * v->col_stride, v->row_stride, v->row_length); }
vsip_vview_d* (vsip_vcreate_d)( vsip_length n, vsip_memory_hint h) { vsip_block_d* b = VI_blockcreate_d((vsip_length)n, h); vsip_vview_d* v = (vsip_vview_d*)NULL; if(b != (vsip_block_d*)NULL){ v = vsip_vbind_d(b, (vsip_offset)0, (vsip_stride)1, n); if (v == (vsip_vview_d*)NULL) vsip_blockdestroy_d(b); } return v; }
vsip_vview_d* (vsip_mdiagview_d)( const vsip_mview_d* v, vsip_stride idiag) { vsip_index i = (idiag < 0) ? -idiag : 0, /* row index of origin */ j = (idiag > 0) ? idiag : 0; /* col index of origin */ vsip_length n_row = v->col_length - i; /* # rows from origin to end */ vsip_length n_col = v->row_length - j; /* # cols from origin to end */ return vsip_vbind_d( v->block, v->offset + i * v->col_stride + j * v->row_stride, v->row_stride + v->col_stride, (n_row < n_col) ? n_row : n_col); }
vsip_vview_d *vsip_tvectview_d( const vsip_tview_d *v, vsip_tvslice slice, vsip_index i, vsip_index j) { vsip_vview_d *vview = (vsip_vview_d*)NULL; vsip_block_d *block = v->block; vsip_offset offset = v->offset; if(slice == VSIP_TVX){ offset += i * v->z_stride + j * v->y_stride; vview = vsip_vbind_d(block,offset,v->x_stride,v->x_length); } else if(slice == VSIP_TVY) { offset += i * v->z_stride + j * v->x_stride; vview = vsip_vbind_d(block,offset,v->y_stride,v->y_length); } else if(slice == VSIP_TVZ){ offset += i * v->y_stride + j * v->x_stride; vview = vsip_vbind_d(block,offset,v->z_stride,v->z_length); } return vview; }
int main() { int i; vsip_cscalar_d z; vsip_scalar_d data[N]; /* a public data space for I/O */ vsip_fft_d *rcfftNop; vsip_block_d *block; vsip_vview_d *xin; vsip_cvview_d *yout; vsip_init((void *)0); rcfftNop = /* Create an out-of-place Real->Cmplx N-pt FFT */ vsip_rcfftop_create_d(N, 1.0, 1, VSIP_ALG_TIME); /* Create a block object and bind it to the array data */ block = vsip_blockbind_d(data, N, VSIP_MEM_NONE); xin = vsip_vbind_d(block, 0, 1, N); /* Create another block and complex vector view for the symmetric output */ yout = vsip_cvcreate_d((N/2)+1, VSIP_MEM_NONE); /* Admit block to VSIPL for processing and initialize with a linear ramp */ vsip_blockadmit_d(block, VSIP_FALSE); vsip_vramp_d(0.0, 1.0, xin); /* Compute an out-of-place Real->Cmplx N-pt FFT using the rcfftNop object */ vsip_rcfftop_d(rcfftNop, xin, yout); /* print it */ printf("Real Input Vector\n"); for(i=0; i<N; i++) { printf("%g\n", vsip_vget_d(xin,i)); } printf("\nComplex Output Vector\n"); for(i=0; i<(N/2)+1; i++) { z = vsip_cvget_d(yout,i); printf(SCMPLX "\n", ACMPLX(z)); } /* Destroy the rcfftNop, blocks, and view objects */ vsip_fft_destroy_d(rcfftNop); vsip_valldestroy_d(xin); vsip_cvalldestroy_d(yout); vsip_finalize((void *)0); return(0); }