diff --git a/FFTlib/cr1fft.c b/FFTlib/cr1fft.c index 1182f3c4477e5a56be1c415ba4078c850d67ea33..67b8f67839bb4098e83c6224ed5603383a9c1b40 100644 --- a/FFTlib/cr1fft.c +++ b/FFTlib/cr1fft.c @@ -113,8 +113,6 @@ void cr1fft(complex *cdata, REAL *rdata, int n, int sign) } Status = DftiSetValue(handle, DFTI_CONJUGATE_EVEN_STORAGE, DFTI_COMPLEX_COMPLEX); - //This options is what we would like, but is depreciated in the future - //Status = DftiSetValue(handle, DFTI_CONJUGATE_EVEN_STORAGE, DFTI_COMPLEX_REAL); if (! DftiErrorClass(Status, DFTI_NO_ERROR)) { dfti_status_print(Status); printf(" DftiSetValue FAIL\n"); @@ -133,9 +131,12 @@ void cr1fft(complex *cdata, REAL *rdata, int n, int sign) printf(" DftiComputeBackward FAIL\n"); } rdata[0] = tmp[0]; - for (i=1; i<n; i++) { - rdata[i] = -sign*tmp[n-i]; - } + if (sign < 0) { + for (i=1; i<n; i++) rdata[i] = -sign*tmp[n-i]; + } + else { + for (i=1; i<n; i++) rdata[i] = tmp[i]; + } free(tmp); #else cr1_fft(cdata, rdata, n, sign); diff --git a/FFTlib/crmfft.c b/FFTlib/crmfft.c index cfc8febc173cc8ee21a0eb3f2046a3e8d4c7a350..a9d4d64ea3d9535cc937104f16222da65adf81e8 100644 --- a/FFTlib/crmfft.c +++ b/FFTlib/crmfft.c @@ -170,9 +170,12 @@ void crmfft(complex *cdata, REAL *rdata, int n1, int n2, int ldc, int ldr, int s for (j=0; j<n2; j++) { Status = DftiComputeBackward(handle, (MKL_Complex8 *)&cdata[j*ldc], tmp); rdata[j*ldr] = tmp[0]; - for (i=1; i<n1; i++) { - rdata[j*ldr+i] = -sign*tmp[n1-i]; - } + if (sign < 0) { + for (i=1; i<n1; i++) rdata[j*ldr+i] = -sign*tmp[n1-i]; + } + else { + for (i=1; i<n1; i++) rdata[j*ldr+i] = tmp[i]; + } } free(tmp); if(! DftiErrorClass(Status, DFTI_NO_ERROR)){ diff --git a/FFTlib/rc1fft.c b/FFTlib/rc1fft.c index 6373d1776ad5711345111fc04161214aa3144b4c..fa7386d7936e35dbdcf2b0f08038b58e3e5be57f 100644 --- a/FFTlib/rc1fft.c +++ b/FFTlib/rc1fft.c @@ -115,6 +115,13 @@ void rc1fft(REAL *rdata, complex *cdata, int n, int sign) dfti_status_print(Status); printf(" DftiSetValue FAIL\n"); } +/* + Status = DftiSetValue(handle, DFTI_FORWARD_DOMAIN, DFTI_REAL); + if(! DftiErrorClass(Status, DFTI_NO_ERROR)){ + dfti_status_print(Status); + printf(" DftiSetValue FAIL\n"); + } +*/ Status = DftiSetValue(handle, DFTI_CONJUGATE_EVEN_STORAGE, DFTI_COMPLEX_COMPLEX); if (! DftiErrorClass(Status, DFTI_NO_ERROR)) { diff --git a/FFTlib/test/rc1test.c b/FFTlib/test/rc1test.c index b5c4999c2fda78c2dd4308781969e6f110ac110a..8771a371dc526006dc44dc7cf64b057412c47a9b 100644 --- a/FFTlib/test/rc1test.c +++ b/FFTlib/test/rc1test.c @@ -24,14 +24,14 @@ int main () { N = 16; k = 5.0; - sign = 1; - isign = -1; + sign = -1; + isign = 1; while (N <= Nmax) { /* Initialize the data */ for (i=0;i<N;i++) { - c_data[i] = (float)-0.1+0.5*(N/2-i); + c_data[i] = (float)-0.1+0.5*(N/3-i)*sin(i*M_PI/N); // c_data[i] = 0.0; } // c_data[0] = 1.0;