void testfft(FILE *fp,t_complex ***grid,int nx,int ny,int nz,gmx_bool bFirst) { #ifdef USE_SGI_FFT #ifdef GMX_DOUBLE static zomplex *coeff; #else static complex *coeff; #endif static int la1,la2; #endif t_complex *cptr; real *gptr,*fqqq,fg,fac; int ntot,i,j,k,m,n,ndim[4]; int npppm; ndim[0] = 0; ndim[1] = nx; ndim[2] = ny; ndim[3] = nz; ntot = nx*ny*nz; cptr = grid[0][0]; fqqq = &(grid[0][0][0].re); #ifdef USE_SGI_FFT if (bFirst) { fprintf(fp,"Going to use SGI optimized FFT routines.\n"); #ifdef GMX_DOUBLE coeff = zfft3di(nx,ny,nz,NULL); #else coeff = cfft3di(nx,ny,nz,NULL); #endif bFirst = FALSE; } la1 = nx; la2 = ny; #ifdef GMX_DOUBLE zfft3d(1,nx,ny,nz,(zomplex *)cptr,la1,la2,coeff); #else cfft3d(1,nx,ny,nz,(complex *)cptr,la1,la2,coeff); #endif #else fourn(fqqq-1,ndim,3,1); #endif #ifdef USE_SGI_FFT #ifdef GMX_DOUBLE zfft3d(-1,nx,ny,nz,(zomplex *)cptr,la1,la2,coeff); #else cfft3d(-1,nx,ny,nz,(complex *)cptr,la1,la2,coeff); #endif #else fourn(fqqq-1,ndim,3,-1); #endif }
int main(void) { std::size_t i; scitbx::fftpack::complex_to_complex<double> cfft(10); std::vector<std::complex<double> > vc(cfft.n()); for(i=0;i<cfft.n();i++) { vc[i] = std::complex<double>(2.*i, 2.*i+1.); } cfft.forward(vc.begin()); for(i=0;i<cfft.n();i++) { std::cout << vc[i].real() << " " << vc[i].imag() << std::endl; } cfft.backward(vc.begin()); for(i=0;i<cfft.n();i++) { std::cout << vc[i].real() << " " << vc[i].imag() << std::endl; } scitbx::fftpack::real_to_complex<double> rfft(10); std::vector<double> vr(2 * rfft.n_complex()); for(i=0;i<rfft.n_real();i++) { vr[i] = 1.*i; } rfft.forward(vr.begin()); for(i=0;i<2*rfft.n_complex();i++) { std::cout << vr[i] << std::endl; } rfft.backward(vr.begin()); for(i=0;i<rfft.n_real();i++) { std::cout << vr[i] << std::endl; } scitbx::fftpack::complex_to_complex_3d<double> cfft3d(2, 3, 5); scitbx::af::versa<std::complex<double>, scitbx::af::c_grid<3> > c3dmap(scitbx::af::c_grid<3>(cfft3d.n())); cfft3d.forward(c3dmap.ref()); cfft3d.backward(c3dmap.ref()); scitbx::fftpack::real_to_complex_3d<double> rfft3d(3, 4, 5); scitbx::af::versa<double, scitbx::af::c_grid<3> > r3dmap(scitbx::af::c_grid<3>(rfft3d.m_real())); rfft3d.forward(r3dmap.ref()); rfft3d.backward(r3dmap.ref()); #ifdef NEVER_DEFINED #endif return 0; }