summaryrefslogtreecommitdiffstats
path: root/src/ffts_real_nd.c
diff options
context:
space:
mode:
authorAnthony Blake <anthonix@me.com>2012-11-16 16:08:10 +1300
committerAnthony Blake <anthonix@me.com>2012-11-16 16:08:10 +1300
commitd1cbc1f7e86fc6d93922b4daa825b8f1b2696679 (patch)
tree01bc1d4d02e1424f7f9cb27026ac4df7d3873345 /src/ffts_real_nd.c
parent15aeb7da259fe1561b779c02fbd5c3198d24fa28 (diff)
downloadffts-d1cbc1f7e86fc6d93922b4daa825b8f1b2696679.zip
ffts-d1cbc1f7e86fc6d93922b4daa825b8f1b2696679.tar.gz
2D real-valued inverse works for N1 != N2
Diffstat (limited to 'src/ffts_real_nd.c')
-rw-r--r--src/ffts_real_nd.c21
1 files changed, 10 insertions, 11 deletions
diff --git a/src/ffts_real_nd.c b/src/ffts_real_nd.c
index 237c2f1..56552f3 100644
--- a/src/ffts_real_nd.c
+++ b/src/ffts_real_nd.c
@@ -78,15 +78,15 @@ void ffts_execute_nd_real_inv(ffts_plan_t *p, const void * in, void * out) {
float *doutr = (float *)out;
size_t i,j;
- ffts_scalar_transpose(din, buf, p->Ns[0], p->Ms[0], p->transpose_buf);
+ ffts_scalar_transpose(din, buf, p->Ms[0], p->Ns[0], p->transpose_buf);
- for(i=0;i<p->Ns[0];i++) {
- p->plans[0]->transform(p->plans[0], buf + (i * p->Ms[0]), dout + (i * p->Ms[0]));
+ for(i=0;i<p->Ms[0];i++) {
+ p->plans[0]->transform(p->plans[0], buf + (i * p->Ns[0]), dout + (i * p->Ns[0]));
}
- ffts_scalar_transpose(dout, buf, p->Ms[0], p->Ns[0], p->transpose_buf);
- for(j=0;j<p->Ns[1];j++) {
- p->plans[1]->transform(p->plans[1], buf + (j * (p->Ns[0])), &doutr[j * p->Ms[1]]);
+ ffts_scalar_transpose(dout, buf, p->Ns[0], p->Ms[0], p->transpose_buf);
+ for(j=0;j<p->Ms[1];j++) {
+ p->plans[1]->transform(p->plans[1], buf + (j * (p->Ms[0])), &doutr[j * p->Ns[1]]);
}
}
@@ -125,11 +125,10 @@ ffts_plan_t *ffts_init_nd_real(int rank, size_t *Ns, int sign) {
else if(!p->plans[i]) p->plans[i] = ffts_init_1d(p->Ms[i], sign);
}else{
for(k=0;k<i;k++) {
- if(p->Ms[k] == p->Ms[i]) p->plans[i] = p->plans[k];
+ if(p->Ns[k] == p->Ns[i]) p->plans[i] = p->plans[k];
}
- if(i==rank-1) { p->plans[i] = ffts_init_1d_real(p->Ms[i], sign);
- }
- else if(!p->plans[i]) p->plans[i] = ffts_init_1d(p->Ms[i], sign);
+ if(i==rank-1) p->plans[i] = ffts_init_1d_real(p->Ns[i], sign);
+ else if(!p->plans[i]) p->plans[i] = ffts_init_1d(p->Ns[i], sign);
}
}
if(sign < 0) {
@@ -138,7 +137,7 @@ ffts_plan_t *ffts_init_nd_real(int rank, size_t *Ns, int sign) {
}
}else{
for(i=0;i<rank-1;i++) {
- p->Ns[i] = p->Ns[i] / 2 + 1;
+ p->Ms[i] = p->Ms[i] / 2 + 1;
}
}
OpenPOWER on IntegriCloud