diff options
Diffstat (limited to 'src/signalProcessing/fft/testMatFft.c')
-rw-r--r-- | src/signalProcessing/fft/testMatFft.c | 48 |
1 files changed, 27 insertions, 21 deletions
diff --git a/src/signalProcessing/fft/testMatFft.c b/src/signalProcessing/fft/testMatFft.c index 728074b5..d199c042 100644 --- a/src/signalProcessing/fft/testMatFft.c +++ b/src/signalProcessing/fft/testMatFft.c @@ -151,55 +151,60 @@ static int testFft(void){ in9[i]=DoubleComplex(inR9[i],0); } - - zfftma(in1, 1, 12, out1); - zfftma(in2, 2, 6, out2); - zfftma(in3, 3, 4, out3); - zfftma(in4, 4, 3, out4); - zfftma(in6, 6, 2, out6); - zfftma(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"); + zfftma(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"); + zfftma(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"); + zfftma(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"); + zfftma(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"); + zfftma(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"); + zfftma(in9, 3, 3, out9); for (i=0;i<9;i++){ if (zreals(out9[i])>1e-16) assert( (fabs(zreals(out9[i])-resR9[i]) / fabs(zreals(out9[i]))) < 1e-16 ); else assert(1); @@ -207,12 +212,13 @@ static int testFft(void){ if (zimags(out9[i])>1e-15) assert( (fabs(zimags(out9[i])-resI9[i]) / fabs(zimags(out9[i]))) < 1e-15 ); else assert(1); } + return 0; } int main(void) { - printf(">>> Fft Matrices Double Tests <<<"); + printf(">>> Fft Matrices Double Tests <<<\n"); assert(testFft() == 0); return 0; } |