diff options
Diffstat (limited to 'src/signalProcessing/ifft/testMatIfft.c')
-rw-r--r-- | src/signalProcessing/ifft/testMatIfft.c | 152 |
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; } + |