diff options
-rw-r--r-- | include/ffts.h | 6 | ||||
-rw-r--r-- | src/ffts_real.c | 4 |
2 files changed, 7 insertions, 3 deletions
diff --git a/include/ffts.h b/include/ffts.h index 1888982..d17ff04 100644 --- a/include/ffts.h +++ b/include/ffts.h @@ -50,10 +50,14 @@ ffts_plan_t *ffts_init_1d(size_t N, int sign); ffts_plan_t *ffts_init_2d(size_t N1, size_t N2, int sign); ffts_plan_t *ffts_init_nd(int rank, size_t *Ns, int sign); +// For real transforms, sign == -1 implies a real-to-complex forwards tranform, +// and sign == 1 implies a complex-to-real backwards transform +// The output of a real-to-complex transform is N/2+1 complex numbers, where the +// redundant outputs have been omitted. ffts_plan_t *ffts_init_1d_real(size_t N, int sign); -void ffts_execute(ffts_plan_t * , const void * , void * ); +void ffts_execute(ffts_plan_t * , const void *input, void *output); void ffts_free(ffts_plan_t *); #ifdef __cplusplus diff --git a/src/ffts_real.c b/src/ffts_real.c index 5f3bb02..03493e1 100644 --- a/src/ffts_real.c +++ b/src/ffts_real.c @@ -58,8 +58,8 @@ void ffts_execute_1d_real(ffts_plan_t *p, const void *vin, void *vout) { for(i=0;i<N/2;i++) { out[2*i] = buf[2*i]*A[2*i] - buf[2*i+1]*A[2*i+1] + buf[N-2*i]*B[2*i] + buf[N-2*i+1]*B[2*i+1]; out[2*i+1] = buf[2*i+1]*A[2*i] + buf[2*i]*A[2*i+1] + buf[N-2*i]*B[2*i+1] - buf[N-2*i+1]*B[2*i]; - out[2*N - 2*i] = out[2*i]; - out[2*N - 2*i + 1] = -out[2*i+1]; +// out[2*N - 2*i] = out[2*i]; +// out[2*N - 2*i + 1] = -out[2*i+1]; } out[N] = buf[0] - buf[1]; |