Exemplo n.º 1
0
void VU_copu_f(
    vsip_cmview_f *A,
    vsip_cvview_f *x,
    vsip_cvview_f *y)
{
     vsip_length m = vsip_cmgetcollength_f(A);
     vsip_length n = vsip_cmgetrowlength_f(A);
     vsip_length i,j;
     vsip_cscalar_f temp;
     for(i=0; i<m; i++)
         for(j=0; j<n; j++){
             temp = vsip_cmul_f(vsip_cvget_f(x,i),vsip_cvget_f(y,j));
             vsip_cmput_f(A,i,j,vsip_cadd_f(vsip_cmget_f(A,i,j),temp));
         }
     return;
}
Exemplo n.º 2
0
void VU_chouse_f(
   vsip_cvview_f *x,
   vsip_cvview_f *v,
   vsip_scalar_f *beta)
{
   vsip_cscalar_f x_1  = vsip_cvget_f(x,0);
   vsip_scalar_f  x2n  = sqrt(vsip_real_f(vsip_cvjdot_f(x,x)));
   vsip_scalar_f x_1radius  = sqrt(x_1.r * x_1.r + x_1.i * x_1.i);
   x_1.r /= x_1radius; x_1.i /= x_1radius;
   x_1.r *= x2n;  x_1.i *= x2n;
   vsip_cvcopy_f_f(x,v);
   x_1 = vsip_csub_f(vsip_cvget_f(v,0),x_1);
   vsip_csvmul_f(vsip_crecip_f(x_1),v,v);
   vsip_cvput_f(v,0,vsip_cmplx_f(1,0));
   *beta = 2.0 /vsip_real_f(vsip_cvjdot_f(v,v));
   return;
}
Exemplo n.º 3
0
PyObject *cvcopyToList_f(vsip_cvview_f *v){
    PyObject *cval;
    vsip_length N = vsip_cvgetlength_f(v);
    PyObject *retval = PyList_New(N);
    vsip_index i;
    for(i=0; i<N; i++){
       vsip_cscalar_f x = vsip_cvget_f(v,i);
       double re = (double)x.r;
       double im = (double)x.i;
       cval = PyComplex_FromDoubles(re,im);
       PyList_SetItem(retval,i,cval);
    }
    return retval;
}
Exemplo n.º 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;
}