コード例 #1
0
ファイル: svd_f.c プロジェクト: rrjudd/jvsip
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);
}
コード例 #2
0
ファイル: svd_f.c プロジェクト: rrjudd/jvsip
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); 
} 
コード例 #3
0
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 */
}
コード例 #4
0
ファイル: example20.c プロジェクト: rrjudd/jvsip
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 *******************************/