static void prodG_f(svdObj_f* svd,vsip_index i, vsip_index j,vsip_scalar_f c, vsip_scalar_f s) { vsip_mview_f* L = svd->Ls; vsip_vview_f *a1= col_sv_f(L,svd->ls_one,i); vsip_vview_f *a2= col_sv_f(L,svd->ls_two,j); vsip_vview_f *a1c=vclone_f(a1,svd->t); vsip_svmul_f(c,a1c,a1); vsip_vsma_f(a2,s,a1,a1); vsip_svmul_f(-s,a1c,a1c);vsip_vsma_f(a2,c,a1c,a2); }
static void gtProd_f(vsip_index i, vsip_index j, vsip_scalar_f c,vsip_scalar_f s, svdObj_f* svd) { vsip_mview_f* R = svd->Rs; vsip_vview_f *a1= row_sv_f(R,svd->rs_one, i); vsip_vview_f *a2= row_sv_f(R,svd->rs_two, j); vsip_vview_f *a1c=vclone_f(a1,svd->t); vsip_svmul_f(c,a1c,a1); vsip_vsma_f(a2,s,a1,a1); vsip_svmul_f(-s,a1c,a1c); vsip_vsma_f(a2,c,a1c,a2); }
int VU_qrd_f( vsip_mview_f *A, vsip_mview_f *R){ vsip_length N = vsip_mgetrowlength_f(A); vsip_scalar_f r; vsip_stride cvst = vsip_mgetrowstride_f(A); vsip_offset a0o = vsip_mgetoffset_f(A); vsip_offset ao = a0o; vsip_length i,j; vsip_vview_f *a = vsip_mcolview_f(A,0); vsip_vview_f *q = vsip_mcolview_f(A,0); if((a == NULL) || (q == NULL)){ /* failure to create vector view */ vsip_vdestroy_f(a); /* destroy in case one create worked */ vsip_vdestroy_f(q); return 1; /* zero implies success */ } for(i=0; i<N; i++){ vsip_vputoffset_f(a,a0o); vsip_vputoffset_f(q,a0o); vsip_mput_f(R,i,i,(r = sqrt(vsip_vdot_f(q,q)))); if(r == 0){ /* no devide by zero */ vsip_vdestroy_f(a); /* clean up any creates */ vsip_vdestroy_f(q); return 2; /* zero implies success */ } vsip_svmul_f((1./r),q,q); a0o += cvst; for(j=i+1; j<N; j++){ ao += cvst; vsip_vputoffset_f(a,ao); vsip_mput_f(R,i,j,(r = vsip_vdot_f(q,a))); vsip_mput_f(R,j,i,0); /* make sure lower diagonal is initialized to zero */ vsip_vsma_f(q,-r,a,a); } ao = a0o; } vsip_vdestroy_f(a); /* clean up any creates */ vsip_vdestroy_f(q); return 0; /* zero implies success */ }
int main () { vsip_init((void*)0); { vsip_vview_f *kernel = vsip_vcreate_kaiser_f(128,15.0,VSIP_MEM_NONE); vsip_randstate *r_state = vsip_randcreate(11,1,1,VSIP_NPRNG); vsip_conv1d_f *conv; vsip_fir_f *fir; vsip_vview_f *data = vsip_vcreate_f( 2 * N_data,VSIP_MEM_NONE), *noise = vsip_vcreate_f( 3 * N_data,VSIP_MEM_NONE), *avg = vsip_vcreate_f( 4 * N_data,VSIP_MEM_NONE); int i; vsip_length N_len; vsip_vputlength_f(data, (vsip_length)((N_data-1)/dec1)+1); vsip_vputlength_f(avg, (vsip_length)((N_data-1)/dec1)+1); vsip_vputstride_f(data,2); vsip_vputstride_f(avg,4); vsip_vputlength_f(noise,N_data); vsip_vputstride_f(noise,3); conv = vsip_conv1d_create_f( kernel,VSIP_NONSYM, N_data,dec1,VSIP_SUPPORT_SAME,0,0); fir = vsip_fir_create_f( kernel,VSIP_NONSYM, N_data,dec1,VSIP_STATE_NO_SAVE,0,0); vsip_vfill_f(0,avg); for(i=0; i<10; i++){ vsip_vrandn_f(r_state,noise); vsip_convolve1d_f(conv,noise,data); VU_vfrdB_f(data,1e-13); vsip_vsma_f(data,0.1,avg,avg); } N_len = vsip_vgetlength_f(avg); { vsip_vview_f *x = vsip_vcreate_f( N_len,VSIP_MEM_NONE); vsip_vramp_f(-.5,1.0/(vsip_scalar_f)(N_len-1),x); VU_vfprintxyg_f("%8.6f %8.6f\n",x,avg,"conv_dec1"); vsip_vdestroy_f(x); } vsip_vfill_f(0,avg); for(i=0; i<10; i++){ vsip_vrandn_f(r_state,noise); vsip_firflt_f(fir,noise,data); VU_vfrdB_f(data,1e-13); vsip_vsma_f(data,0.1,avg,avg); } N_len = vsip_vgetlength_f(avg); { vsip_vview_f *x = vsip_vcreate_f( N_len,VSIP_MEM_NONE); vsip_vramp_f(-.5,1.0/(vsip_scalar_f)(N_len-1),x); VU_vfprintxyg_f("%8.6f %8.6f\n",x,avg,"fir_dec1"); vsip_vdestroy_f(x); } vsip_conv1d_destroy_f(conv); vsip_fir_destroy_f(fir); conv = vsip_conv1d_create_f( kernel,VSIP_NONSYM, N_data,dec3,VSIP_SUPPORT_SAME,0,0); fir = vsip_fir_create_f( kernel,VSIP_NONSYM, N_data,dec3,VSIP_STATE_NO_SAVE,0,0); vsip_vputlength_f(data, (vsip_length)((N_data-1)/dec3)+1); vsip_vputlength_f(avg, (vsip_length)((N_data-1)/dec3)+1); vsip_vfill_f(0,avg); for(i=0; i<10; i++){ vsip_vrandn_f(r_state,noise); vsip_convolve1d_f(conv,noise,data); VU_vfrdB_f(data,1e-13); vsip_vsma_f(data,0.1,avg,avg); } N_len = vsip_vgetlength_f(avg); { vsip_vview_f *x = vsip_vcreate_f( N_len,VSIP_MEM_NONE); vsip_vramp_f(-.5,1.0/(vsip_scalar_f)(N_len - 1),x); VU_vfprintxyg_f("%8.6f %8.6f\n", x, avg,"conv_dec3"); vsip_vdestroy_f(x); } vsip_vfill_f(0,avg); for(i=0; i<10; i++){ vsip_vrandn_f(r_state,noise); vsip_firflt_f(fir,noise,data); VU_vfrdB_f(data,1e-13); vsip_vsma_f(data,0.1,avg,avg); } N_len = vsip_vgetlength_f(avg); { vsip_vview_f *x = vsip_vcreate_f( N_len,VSIP_MEM_NONE); vsip_vramp_f(-.5,1.0/(vsip_scalar_f)(N_len-1),x); VU_vfprintxyg_f("%8.6f %8.6f\n", x, avg,"fir_dec3"); vsip_vdestroy_f(x); } N_len = vsip_vgetlength_f(kernel); { vsip_vview_f *x = vsip_vcreate_f( N_len,VSIP_MEM_NONE); vsip_vramp_f(0,1,x); VU_vfprintxyg_f("%8.6f %8.6f\n", x,kernel,"kaiser_window"); vsip_vramp_f(-.5,1.0/(vsip_scalar_f)(N_len-1),x); VU_vfrdB_f(kernel,1e-20); VU_vfprintxyg_f("%8.6f %8.6f\n", x,kernel,"Freq_Resp_Kaiser"); vsip_vdestroy_f(x); } vsip_randdestroy(r_state); vsip_valldestroy_f(kernel); vsip_conv1d_destroy_f(conv);vsip_fir_destroy_f(fir); vsip_valldestroy_f(data); vsip_valldestroy_f(noise); vsip_valldestroy_f(avg); } vsip_finalize((void*)0); return 0; }/*end of main program *******************************/