int main(int argc, char *argv[]){vsip_init((void*)0); { if(argc < 4){ printf("usage\nfirEx length decimation filterFile <indataFile >outputFile\n"); exit(0); } { vsip_length N = (vsip_length)atoi(argv[1]); int D = atoi(argv[2]); vsip_scalar_vi n = 0,k = 0; vsip_scalar_d hvr,hvi; FILE *fh; vsip_cfir_d *fir; vsip_cvview_d *x = vsip_cvcreate_d(N,0), *h,*y; fh = fopen(argv[3],"r"); while(fscanf(fh,"%lf %lf",&hvr, &hvi) == 2) n++; rewind(fh); y = vsip_cvcreate_d(N/D + ((N % D) ? 1:0),0); h = vsip_cvcreate_d(n,0); n=0; while(fscanf(fh,"%lf %lf",&hvr,&hvi) == 2){ vsip_cvput_d(h,n,vsip_cmplx_d(hvr,hvi)); n++; } fclose(fh); /* fir = vsip_cfir_create_d(h,VSIP_SYM_EVEN_LEN_ODD,N,D,STATE,0,0); */ /* fir = vsip_cfir_create_d(h,VSIP_SYM_EVEN_LEN_EVEN,N,D,STATE,0,0); */ fir = vsip_cfir_create_d(h,VSIP_NONSYM,N,D,STATE,0,0); n = VU_cscanstdin_d(x); while(n == N){ k = vsip_cfirflt_d(fir,x,y); VU_cprintstdout_d(y,0,k); n = VU_cscanstdin_d(x); } if(n != 0){ k = vsip_cfirflt_d(fir,x,y); VU_cprintstdout_d(y,0,k); } {/* test getattr */ vsip_cfir_attr attr; vsip_cfir_getattr_d(fir,&attr); printf("kernel %lu\n input %lu\n output %lu\ndecimation %d\n", attr.kernel_len,attr.in_len,attr.out_len, attr.decimation); } vsip_cvalldestroy_d(y); vsip_cvalldestroy_d(x); vsip_cvalldestroy_d(h); vsip_cfir_destroy_d(fir); }vsip_finalize((void*)0);return 1; } }
int main(){vsip_init((void*)0); { void VU_vfprintyg_d(char*,vsip_vview_d*,char*); void VU_vfreqswapIP_d(vsip_vview_d*); vsip_vview_d* Cw = vsip_vcreate_cheby_d(Nlength,ripple,0); vsip_fft_d *fft = vsip_ccfftip_create_d(Nlength,1.0,VSIP_FFT_FWD,0,0); vsip_cvview_d* FCW = vsip_cvcreate_d(Nlength,0); /*printf("CW = "); VU_vprintm_d("%6.8f ;\n",Cw); */ VU_vfprintyg_d("%6.8f\n",Cw,"Cheby_Window"); vsip_cvfill_d(vsip_cmplx_d(0,0),FCW); { vsip_vview_d *rv = vsip_vrealview_d(FCW); vsip_vcopy_d_d(Cw,rv); vsip_ccfftip_d(fft,FCW); vsip_vcmagsq_d(FCW,rv); { vsip_index ind; vsip_scalar_d max = vsip_vmaxval_d(rv,&ind); vsip_scalar_d min = max/(10e12); vsip_vclip_d(rv,min,max,min,max,rv); } vsip_vlog10_d(rv,rv); vsip_svmul_d(10,rv,rv); VU_vfreqswapIP_d(rv); VU_vfprintyg_d("%6.8f\n",rv,"Cheby_Window_Frequency_Response"); vsip_vdestroy_d(rv); } vsip_fft_destroy_d(fft); vsip_valldestroy_d(Cw); vsip_cvalldestroy_d(FCW); } vsip_finalize((void*)0); return 0; }
int main(){vsip_init((void*)0); { /* vsip_cmview_d *B = vsip_cmcreate_d(P,N,VSIP_ROW,0);*/ vsip_scalar_d Re[20], Im[20]; vsip_cblock_d *Bblock = vsip_cblockbind_d(Re,Im,20,0); vsip_cmview_d *B = vsip_cmbind_d(Bblock,0,4,5,1,4); vsip_cvview_d *a = vsip_cvcreate_d(P,0), *r = vsip_cvcreate_d(N,0); int i, j; for(i=0;i<P;i++) vsip_cvput_d(a,i,vsip_cmplx_d(i,1 + sqrt(i))); for(i=0;i<P;i++) for(j=0;j<N;j++) vsip_cmput_d(B,i,j,vsip_cmplx_d(1 , i * j)); vsip_cvmprod_d(a,B,r); printf("\n vector input \n v=["); for(i=0;i<P;i++) printf("(%5.2f %+5.2fi) ", vsip_real_d(vsip_cvget_d(a,i)), vsip_imag_d(vsip_cvget_d(a,i))); printf("]\n"); printf("\n B input \n B =[\n"); {for(i=0;i<P;i++) {for(j=0;j<N;j++){ printf(" (%5.2f %+5.2fi) ", vsip_real_d(vsip_cmget_d(B,i,j)), vsip_imag_d(vsip_cmget_d(B,i,j))); } printf(";\n"); } printf("]\n"); } printf("\n vector output \n"); for(i=0;i<N;i++) printf("(%5.2f, %5.2f) ", vsip_real_d(vsip_cvget_d(r,i)), vsip_imag_d(vsip_cvget_d(r,i))); printf("\n"); vsip_cvalldestroy_d(a); vsip_cmalldestroy_d(B); vsip_cvalldestroy_d(r); }vsip_finalize((void*)0);return 0; }
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); }
int main(){vsip_init((void*)0); { vsip_cmview_d *Adummy = vsip_cmcreate_d(5*NN,5*NN,VSIP_COL,0); vsip_cmview_d *A = vsip_cmsubview_d(Adummy,3,2,NN,NN); /* vsip_cmview_d *A= vsip_cmcreate_d(NN,NN,VSIP_COL,0); */ vsip_cvview_d *x0 = vsip_cvcreate_d(NN,0); vsip_vview_d *x0_r = vsip_vrealview_d(x0); vsip_vview_d *x0_i = vsip_vimagview_d(x0); vsip_cmview_d *X = vsip_cmcreate_d(NN,3,VSIP_ROW,0); vsip_cmview_d *XT = vsip_cmcreate_d(NN,3,VSIP_COL,0); vsip_cmputrowstride_d(A,2*vsip_cmgetrowstride_d(A)); vsip_cmputcolstride_d(A,3*vsip_cmgetcolstride_d(A)); /* matrix data */ vsip_cmput_d(A,0,0,vsip_cmplx_d(0.5,0.1)); vsip_cmput_d(A,0,1,vsip_cmplx_d(7,0.1)); vsip_cmput_d(A,0,2,vsip_cmplx_d(10,0.1)); vsip_cmput_d(A,0,3,vsip_cmplx_d(12,0.1)); vsip_cmput_d(A,0,4,vsip_cmplx_d(-3,0.1)); vsip_cmput_d(A,0,5,vsip_cmplx_d(0,0.1)); vsip_cmput_d(A,0,6,vsip_cmplx_d(.05,0.1)); vsip_cmput_d(A,1,0,vsip_cmplx_d(2,0.1)); vsip_cmput_d(A,1,1,vsip_cmplx_d(13,0.1)); vsip_cmput_d(A,1,2,vsip_cmplx_d(18,0.1)); vsip_cmput_d(A,1,3,vsip_cmplx_d(6,0.1)); vsip_cmput_d(A,1,4,vsip_cmplx_d(0,0.1)); vsip_cmput_d(A,1,5,vsip_cmplx_d(130,0.1)); vsip_cmput_d(A,1,6,vsip_cmplx_d(8,0.1)); vsip_cmput_d(A,2,0,vsip_cmplx_d(3,0.1)); vsip_cmput_d(A,2,1,vsip_cmplx_d(-9,0.1)); vsip_cmput_d(A,2,2,vsip_cmplx_d(2,0.1)); vsip_cmput_d(A,2,3,vsip_cmplx_d(3,0.2)); vsip_cmput_d(A,2,4,vsip_cmplx_d(2,0.2)); vsip_cmput_d(A,2,5,vsip_cmplx_d(-9,0.2)); vsip_cmput_d(A,2,6,vsip_cmplx_d(6,0.2)); vsip_cmput_d(A,3,0,vsip_cmplx_d(4,0.2)); vsip_cmput_d(A,3,1,vsip_cmplx_d(2,0.2)); vsip_cmput_d(A,3,2,vsip_cmplx_d(2,0.2)); vsip_cmput_d(A,3,3,vsip_cmplx_d(4,0.2)); vsip_cmput_d(A,3,4,vsip_cmplx_d(1,0.2)); vsip_cmput_d(A,3,5,vsip_cmplx_d(2,0.2)); vsip_cmput_d(A,3,6,vsip_cmplx_d(3,0.2)); vsip_cmput_d(A,4,0,vsip_cmplx_d(.2,0.3)); vsip_cmput_d(A,4,1,vsip_cmplx_d(2,0.3)); vsip_cmput_d(A,4,2,vsip_cmplx_d(9,0.3)); vsip_cmput_d(A,4,3,vsip_cmplx_d(4,0.3)); vsip_cmput_d(A,4,4,vsip_cmplx_d(1,0.3)); vsip_cmput_d(A,4,5,vsip_cmplx_d(2,0.3)); vsip_cmput_d(A,4,6,vsip_cmplx_d(3,0.3)); vsip_cmput_d(A,5,0,vsip_cmplx_d(.1,0.4)); vsip_cmput_d(A,5,1,vsip_cmplx_d(2,0.4)); vsip_cmput_d(A,5,2,vsip_cmplx_d(.3,0.4)); vsip_cmput_d(A,5,3,vsip_cmplx_d(4,0.4)); vsip_cmput_d(A,5,4,vsip_cmplx_d(1,0.4)); vsip_cmput_d(A,5,5,vsip_cmplx_d(2,0.4)); vsip_cmput_d(A,5,6,vsip_cmplx_d(3,0.4)); vsip_cmput_d(A,6,0,vsip_cmplx_d(.01,0.4)); vsip_cmput_d(A,6,1,vsip_cmplx_d(.2,0.4)); vsip_cmput_d(A,6,2,vsip_cmplx_d(3,0.4)); vsip_cmput_d(A,6,3,vsip_cmplx_d(4,0.4)); vsip_cmput_d(A,6,4,vsip_cmplx_d(1,0.4)); vsip_cmput_d(A,6,5,vsip_cmplx_d(2,0.4)); vsip_cmput_d(A,6,6,vsip_cmplx_d(3,0.4)); { /* were solving for NTRANS Ax = B */ /* use a known X, calculate B using Ax */ int k; vsip_cvview_d *x; vsip_cmview_d *AT = vsip_cmcreate_d(NN,NN,VSIP_ROW,VSIP_MEM_NONE); vsip_length L = vsip_cmgetrowlength_d(X); vsip_cmherm_d(A,AT); printf("A = "); VU_cmprintm_d("7.4",A); printf("AT = "); VU_cmprintm_d("7.4",AT); vsip_vramp_d(1,1,x0_r); vsip_vramp_d(1,-1,x0_i); for(k=0; k<L; k++){ x = vsip_cmcolview_d(X,k); vsip_cmvprod_d(A,x0,x); vsip_rscvmul_d(2.0,x0,x0); vsip_cvdestroy_d(x); } vsip_vramp_d(1,1,x0_r); vsip_vramp_d(1,-1,x0_i); for(k=0; k<L; k++){ x = vsip_cmcolview_d(XT,k); vsip_cmvprod_d(AT,x0,x); VU_cvprintm_d("7.4",x0); vsip_rscvmul_d(2.0,x0,x0); vsip_cvdestroy_d(x); } vsip_cmalldestroy_d(AT); printf("B = "); VU_cmprintm_d("7.4",X); printf("BT = "); VU_cmprintm_d("7.4",XT); { /* then solve to see if we get X back */ vsip_clu_d* luAop = vsip_clud_create_d(NN); if(luAop == NULL) exit(1); vsip_clud_d(luAop,A); { vsip_clu_attr_d attr; vsip_clud_getattr_d(luAop,&attr); printf("lud size %lu\n",attr.n); } vsip_clusol_d(luAop,VSIP_MAT_NTRANS,X); vsip_clusol_d(luAop,VSIP_MAT_HERM,XT); vsip_clud_destroy_d(luAop); } } printf("A\\X = "); VU_cmprintm_d("9.6",X); printf("A'\\X = "); VU_cmprintm_d("9.6",XT); { vsip_vdestroy_d(x0_r);vsip_vdestroy_d(x0_i); vsip_cvalldestroy_d(x0); vsip_cmalldestroy_d(X); vsip_cmalldestroy_d(A); } }vsip_finalize((void*)0);return 1; }