コード例 #1
0
int vsip_conv1d_destroy_f(vsip_conv1d_f *conv)
{
   if(conv != NULL){
      if(conv->x != NULL) VI_cvalldestroy_f(conv->x);
      if(conv->H != NULL) VI_cvalldestroy_f(conv->H);
      if(conv->fft != NULL) vsip_fft_destroy_f(conv->fft);
      if(conv->fftm != NULL) vsip_fftm_destroy_f(conv->fftm);
      if(conv->Xm != NULL) vsip_cmalldestroy_f(conv->Xm);
      free(conv);
   }
   return 0;
}
コード例 #2
0
ファイル: example20.c プロジェクト: rrjudd/jvsip
int VU_vfrdB_f(vsip_vview_f *a,vsip_scalar_f range)
{ int ret = 0;
  vsip_length N_len=vsip_vgetlength_f(a);
  vsip_cvview_f *ca=vsip_cvcreate_f(N_len,VSIP_MEM_NONE);
  vsip_fft_f *fft =   vsip_ccfftip_create_f(
       N_len,1,VSIP_FFT_FWD,0,0);
  vsip_vview_f *ra = vsip_vrealview_f(ca),
               *ia = vsip_vimagview_f(ca),
               *ta = vsip_vcloneview_f(a);
  vsip_offset s = (vsip_offset)vsip_vgetstride_f(ta);
  if((ca == NULL) || (fft == NULL) || (ra == NULL) ||
     (ia == NULL) || (ta == NULL)){ret =  1;
  }else{
     vsip_vfill_f(0,ia); vsip_vcopy_f_f(a,ra);
     vsip_ccfftip_f(fft,ca);
     vsip_vcmagsq_f(ca,ra);
     {  vsip_index ind;/* scale by "range" min to max*/
        vsip_scalar_f max = vsip_vmaxval_f(ra,&ind);
        vsip_scalar_f min = max * range;
        vsip_vclip_f(ra,min,max,min,max,ra);
     }
     if(N_len%2){vsip_length Nlen = N_len/2;
         vsip_vputlength_f(ta,Nlen+1);
         vsip_vputlength_f(ra,Nlen+1);
         vsip_vputoffset_f(ta,Nlen * s);
         vsip_vcopy_f_f(ra,ta);
         vsip_vputlength_f(ra,Nlen);
         vsip_vputlength_f(ta,Nlen);
         vsip_vputoffset_f(ta,vsip_vgetoffset_f(a));
         vsip_vputoffset_f(ra,Nlen+1);
         vsip_vcopy_f_f(ra,ta);
     }else{vsip_length Nlen = N_len/2;
         vsip_vcopy_f_f(ra,ta);
         vsip_vputlength_f(ta,Nlen);
         vsip_vputlength_f(a,Nlen);
         vsip_vputoffset_f(ta,(vsip_offset)(Nlen) * s);
         vsip_vswap_f(ta,a);
         vsip_vputlength_f(a,N_len);
      }vsip_vlog10_f(a,a);vsip_svmul_f(10,a,a);
   }vsip_fft_destroy_f(fft);
     vsip_vdestroy_f(ra); vsip_vdestroy_f(ia);
     vsip_cvalldestroy_f(ca);vsip_vdestroy_f(ta);
     return ret;
}
コード例 #3
0
ファイル: vsip_fftm_destroy_f.c プロジェクト: rrjudd/jvsip
int vsip_fftm_destroy_f(vsip_fftm_f *fftm)
{
    #if defined(VSIP_USE_FFT_FOR_FFTM_F)
       if(fftm != NULL){
          vsip_fft_f* fft = (vsip_fft_f*) fftm->ext_fftm_obj;
          if(fft != NULL) vsip_fft_destroy_f(fft);
          free(fftm);
       } 
    #else
       if(fftm != NULL){
          VI_cvalldestroy_f(fftm->wt);
          VI_cvalldestroy_f(fftm->temp);
          free(fftm->pn);
          free(fftm->p0);
          free(fftm->pF);
          free(fftm->index);
          free(fftm);
       }
    #endif
    return 0;
}
コード例 #4
0
int main () {
  vsip_init((void*)0);{
     double time0, time_rc=0, time_cr=0;
     int i;
     /*int k; for(k=0; k<4; k++)*/{
     vsip_cvview_f* vectorOut = vsip_cvcreate_f(L/2 + 1,VSIP_MEM_NONE);
     vsip_vview_f* vectorIn = vsip_vcreate_f(L,VSIP_MEM_NONE);
     vsip_vview_f* ivectorOut = vsip_vcreate_f(L,VSIP_MEM_NONE);
     vsip_fft_f* fftplan  = vsip_rcfftop_create_f(L,1.0/L,0,VSIP_ALG_SPACE);
     vsip_fft_f* ifftplan = vsip_crfftop_create_f(L,(double)(1.0),0,VSIP_ALG_TIME);
     char printbuffer[10][40];
/*     char printbuffer[L/2][40]; */
   
     vsip_vramp_f(0, 2 * M_PI * F, vectorIn);
     vsip_vcos_f(vectorIn,vectorIn);
   
     /* print vectorIn */
     /* for(i=0; i<L/2; i++) */
     for(i=0; i<10; i++)
        sprintf(printbuffer[i],"%2d, %2d input-> %7.3f, %7.3f",
                 i, i+L/2, vsip_vget_f(vectorIn,i), vsip_vget_f(vectorIn,i+L/2));

     /*find the fft*/
     for(i=0; i<N; i++){
        /* printf("%d\n",i);fflush(stdout); */
        time0=VU_ansi_c_clock();
        vsip_rcfftop_f(fftplan,vectorIn,vectorOut);
        time_rc += (VU_ansi_c_clock() - time0);
        /*find the inverse fft*/
        time0=VU_ansi_c_clock();
        vsip_crfftop_f(ifftplan,vectorOut,ivectorOut);  
        time_cr += (VU_ansi_c_clock() - time0);
     }
     /*print it */
     /* for(i=0; i<L/2; i++) */
     for(i=0; i<10; i++)
        printf("%s   fft -> (%9.4f, %9.4f) ifft-> %7.3f, %7.3f\n" ,
              printbuffer[i],
              vsip_real_f(vsip_cvget_f(vectorOut,i)),
              vsip_imag_f(vsip_cvget_f(vectorOut,i)),
              vsip_vget_f(ivectorOut,i), 
              vsip_vget_f(ivectorOut,i+L/2));
     printf("                                  fft -> (%9.4f, %9.4f)\n",
              vsip_real_f(vsip_cvget_f(vectorOut,i)),
              vsip_imag_f(vsip_cvget_f(vectorOut,i)));
    {/* test vsip_fft_getattr_f */
         vsip_fft_attr_f attr;
         vsip_fft_getattr_f(fftplan, &attr);
         printf("%lu %lu %d %f %d\n",attr.input,attr.output,attr.place,attr.scale,attr.dir);
         vsip_fft_getattr_f(ifftplan, &attr);
         printf("%lu %lu %d %f %d\n",attr.input,attr.output,attr.place,attr.scale,attr.dir);
     }
     vsip_cvalldestroy_f(vectorOut);
     vsip_valldestroy_f(vectorIn);
     vsip_fft_destroy_f(fftplan);
     printf("time_rc %f; time_cr %f\n",time_rc/(double)N, time_cr/(double)N);
   } 
   }
   vsip_finalize((void*)0); 
   return 0;
}
コード例 #5
0
ファイル: fft.cpp プロジェクト: BackupTheBerlios/openvsipl
 static void destroy(fft_type *fft) { vsip_fft_destroy_f(fft);}