summaryrefslogtreecommitdiff
path: root/src/signalProcessing/ifft/testMatIfft.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/signalProcessing/ifft/testMatIfft.c')
-rw-r--r--src/signalProcessing/ifft/testMatIfft.c152
1 files changed, 107 insertions, 45 deletions
diff --git a/src/signalProcessing/ifft/testMatIfft.c b/src/signalProcessing/ifft/testMatIfft.c
index 60e74607..88de15e5 100644
--- a/src/signalProcessing/ifft/testMatIfft.c
+++ b/src/signalProcessing/ifft/testMatIfft.c
@@ -107,7 +107,73 @@
+ 0.8660254037844383745437,- 0.0000000000000000138778,+ 0.0000000000000000138778}
-static int testIfft(void){
+static void difftmaTest(void){
+ int i;
+
+ double in1[]=test1;
+ double in2[]=test2;
+ double in3[]=test3;
+ double in4[]=test4;
+ double in6[]=test6;
+ double in9[]=test9;
+
+ double resR1[]=RRESULT1;
+ double resR2[]=RRESULT2;
+ double resR3[]=RRESULT3;
+ double resR4[]=RRESULT4;
+ double resR6[]=RRESULT6;
+ double resR9[]=RRESULT9;
+
+ double out1[12], out2[12], out3[12], out4[12], out6[12], out9[9];
+
+
+ printf(" >>> Matrice 1*12 <<< \n");
+ difftma(in1, 1, 12, out1);
+ for (i=0;i<12;i++){
+ if (out1[i]>1e-14) assert( (fabs(out1[i]-resR1[i]) / fabs(out1[i])) < 1e-14 );
+ else assert(1);
+ }
+
+ printf(" >>> Matrice 2*6 <<< \n");
+ difftma(in2, 2, 6, out2);
+ for (i=0;i<12;i++){
+ if (out2[i]>1e-14) assert( (fabs(out2[i]-resR2[i]) / fabs(out2[i])) < 1e-14 );
+ else assert(1);
+ }
+
+
+ printf(" >>> Matrice 3*4 <<< \n");
+ difftma(in3, 3, 4, out3);
+ for (i=0;i<12;i++){
+ if (out3[i]>1e-14) assert( (fabs(out3[i]-resR3[i]) / fabs(out3[i])) < 1e-14 );
+ else assert(1);
+ }
+
+ printf(" >>> Matrice 4*3 <<< \n");
+ difftma(in4, 4, 3, out4);
+ for (i=0;i<12;i++){
+ if (out4[i]>1e-14) assert( (fabs(out4[i]-resR4[i]) / fabs(out4[i])) < 1e-14 );
+ else assert(1);
+ }
+
+ printf(" >>> Matrice 6*2 <<< \n");
+ difftma(in6, 6, 2, out6);
+ for (i=0;i<12;i++){
+ if (out6[i]>1e-16) assert( (fabs(out6[i]-resR6[i]) / fabs(out6[i])) < 1e-14 );
+ else assert(1);
+ }
+
+ printf(" >>> Matrice 3*3 <<< \n");
+ difftma(in9, 3, 3, out9);
+ for (i=0;i<9;i++){
+ if (out9[i]>1e-16) assert( (fabs(out9[i]-resR9[i]) / fabs(out9[i])) < 1e-16 );
+ else assert(1);
+ }
+
+
+}
+
+static void zifftmaTest(void){
int i;
double inR1[]=test1;
@@ -130,7 +196,7 @@ static int testIfft(void){
double resR9[]=RRESULT9;
double resI9[]=IRESULT9;
- doubleComplex *in1, *in2, *in3, *in4, *in6, *in9, *out1, *out2, *out3, *out4, *out6, *out9;
+ doubleComplex *in1, *in2, *in3, *in4, *in6, *in9, out1[12], out2[12], out3[12], out4[12], out6[12], out9[12];
in1=malloc((uint)12*sizeof(doubleComplex));
in2=malloc((uint)12*sizeof(doubleComplex));
@@ -138,13 +204,9 @@ static int testIfft(void){
in4=malloc((uint)12*sizeof(doubleComplex));
in6=malloc((uint)12*sizeof(doubleComplex));
in9=malloc((uint)9*sizeof(doubleComplex));
- out1=malloc((uint)12*sizeof(doubleComplex));
- out2=malloc((uint)12*sizeof(doubleComplex));
- out3=malloc((uint)12*sizeof(doubleComplex));
- out4=malloc((uint)12*sizeof(doubleComplex));
- out6=malloc((uint)12*sizeof(doubleComplex));
- out9=malloc((uint)9*sizeof(doubleComplex));
-
+
+
+
for (i=0;i<12;i++){
in1[i]=DoubleComplex(inR1[i],0);
in2[i]=DoubleComplex(inR2[i],0);
@@ -156,81 +218,81 @@ static int testIfft(void){
in9[i]=DoubleComplex(inR9[i],0);
}
-
- zifftma(in1, 1, 12, out1);
- zifftma(in2, 2, 6, out2);
- zifftma(in3, 3, 4, out3);
- zifftma(in4, 4, 3, out4);
- zifftma(in6, 6, 2, out6);
- zifftma(in9, 3, 3, out9);
-
/* !!!!!!!!!!!!!!!!!!!!!!!
for the imaginary part, the assert is out + res instead of out - res
cause I export the transposate of the result matrix and the transposate change the sign
of the imaginary part.
And instead of change all the define, I only change the sign of the assert.*/
+ printf(" >>> Matrice 1*12 <<< \n");
+ zifftma(in1, 1, 12, out1);
for (i=0;i<12;i++){
- if (zreals(out1[i])>1e-16) assert( (fabs(zreals(out1[i])-resR1[i]) / fabs(zreals(out1[i]))) < 1e-14 );
+ if (zreals(out1[i])>1e-14) assert( (fabs(zreals(out1[i])-resR1[i]) / fabs(zreals(out1[i]))) < 1e-14 );
else assert(1);
- if (zimags(out1[i])>1e-16) assert( (fabs(zimags(out1[i])+resI1[i]) / fabs(zimags(out1[i]))) < 1e-14 );
+ if (zimags(out1[i])>1e-14) assert( (fabs(zimags(out1[i])+resI1[i]) / fabs(zimags(out1[i]))) < 1e-14 );
else assert(1);
}
-
+
+ printf(" >>> Matrice 2*6 <<< \n");
+ zifftma(in2, 2, 6, out2);
for (i=0;i<12;i++){
- if (zreals(out2[i])>1e-16) assert( (fabs(zreals(out2[i])-resR2[i]) / fabs(zreals(out2[i]))) < 1e-14 );
+ if (zreals(out2[i])>1e-14) assert( (fabs(zreals(out2[i])-resR2[i]) / fabs(zreals(out2[i]))) < 1e-14 );
else assert(1);
- if (zimags(out2[i])>1e-16) assert( (fabs(zimags(out2[i])+resI2[i]) / fabs(zimags(out2[i]))) < 1e-14 );
+ if (zimags(out2[i])>1e-14) assert( (fabs(zimags(out2[i])+resI2[i]) / fabs(zimags(out2[i]))) < 1e-13 );
else assert(1);
}
+
+ printf(" >>> Matrice 3*4 <<< \n");
+ zifftma(in3, 3, 4, out3);
for (i=0;i<12;i++){
- if (zreals(out3[i])>1e-16) assert( (fabs(zreals(out3[i])-resR3[i]) / fabs(zreals(out3[i]))) < 1e-14 );
+ if (zreals(out3[i])>1e-14) assert( (fabs(zreals(out3[i])-resR3[i]) / fabs(zreals(out3[i]))) < 1e-14 );
else assert(1);
- if (zimags(out3[i])>1e-16) assert( (fabs(zimags(out3[i])+resI3[i]) / fabs(zimags(out3[i]))) < 1e-14 );
+ if (zimags(out3[i])>1e-14) assert( (fabs(zimags(out3[i])+resI3[i]) / fabs(zimags(out3[i]))) < 1e-14 );
else assert(1);
}
-
+
+ printf(" >>> Matrice 4*3 <<< \n");
+ zifftma(in4, 4, 3, out4);
for (i=0;i<12;i++){
- if (zreals(out4[i])>1e-16) assert( (fabs(zreals(out4[i])-resR4[i]) / fabs(zreals(out4[i]))) < 1e-14 );
+ if (zreals(out4[i])>1e-14) assert( (fabs(zreals(out4[i])-resR4[i]) / fabs(zreals(out4[i]))) < 1e-14 );
else assert(1);
- if (zimags(out4[i])>1e-16) assert( (fabs(zimags(out4[i])+resI4[i]) / fabs(zimags(out4[i]))) < 1e-14 );
+ if (zimags(out4[i])>1e-14) assert( (fabs(zimags(out4[i])+resI4[i]) / fabs(zimags(out4[i]))) < 1e-14 );
else assert(1);
}
-
+
+ printf(" >>> Matrice 6*2 <<< \n");
+ zifftma(in6, 6, 2, out6);
for (i=0;i<12;i++){
if (zreals(out6[i])>1e-16) assert( (fabs(zreals(out6[i])-resR6[i]) / fabs(zreals(out6[i]))) < 1e-14 );
else assert(1);
if (zimags(out6[i])>1e-16) assert( (fabs(zimags(out6[i])+resI6[i]) / fabs(zimags(out6[i]))) < 1e-14 );
else assert(1);
}
-
+
+ printf(" >>> Matrice 3*3 <<< \n");
+ zifftma(in9, 3, 3, out9);
for (i=0;i<9;i++){
- printf("i : %d out : %f - res : %f - reste : %f\n",i,zimags(out9[i]),resI9[i],fabs(zimags(out9[i])-resI9[i]) / fabs(zimags(out9[i])));
if (zreals(out9[i])>1e-16) assert( (fabs(zreals(out9[i])-resR9[i]) / fabs(zreals(out9[i]))) < 1e-16 );
else assert(1);
if (zimags(out9[i])>1e-15) assert( (fabs(zimags(out9[i])-resI9[i]) / fabs(zimags(out9[i]))) < 1e-15 );
else assert(1);
- }
- free(in1);
- free(in2);
- free(in3);
- free(in4);
- free(in6);
- free(in9);
- free(out1);
- free(out2);
- free(out3);
- free(out4);
- free(out6);
- free(out9);
+ }
+}
+
+
+
+static int testiFft(void){
+ difftmaTest();
+ zifftmaTest();
return 0;
}
int main(void) {
- printf(">>> Ifft Matrices Double Tests <<<");
- assert(testIfft() == 0);
+ printf(">>> Fft Matrices Double Tests <<<\n");
+ assert(testiFft() == 0);
return 0;
}
+