cos me retourne des résultats différents

cos me retourne des résultats différents - C - Programmation

Marsh Posté le 19-01-2019 à 11:03:53    

Bonjour,
 
Je cherche à compiler la librairie mpg123 -> echec et  je perd mon temps !

Code :
  1. #include <math.h>
  2. # define M_PI       3.14159265358979323846
  3. static double cos64[16], cos32[8], cos16[4], cos8[2], cos4[1];
  4. double *pnts[] = { cos64,cos32,cos16,cos8,cos4 };
  5. //double pnts[16];
  6. #ifndef DOUBLE_TO_REAL
  7. # define DOUBLE_TO_REAL(x)     (double)(x)
  8. #endif
  9. void prepare_decode_tables()
  10. {
  11. #if !defined(REAL_IS_FIXED) || !defined(PRECALC_TABLES)
  12. int i, k, kr, divv;
  13. double *costab;
  14. double gi;
  15. for (i = 0; i < 5; i++)
  16. {
  17.  kr = 0x10 >> i; divv = 0x40 >> i;
  18.  costab = pnts[i];
  19.  for (k = 0; k < kr; k++)
  20.  {
  21.   costab[k] = DOUBLE_TO_REAL(1.0 / (2.0 * cos(M_PI * ((double)k * 2.0 + 1.0) / 1.0 / (double)divv)));
  22.  }
  23. }
  24. #endif


 
cos me retourne -nan(ind) sur le projet mpg123 et sur un autre projet d'essai cos me retourne les resultats différents qui sont normalement bon.
 
je n'y comprend rien du tout pourqoi cos renvoie des résultats différents d'un projet à l'aitre.
 
Je l'ai tester sur une autre machine , même chose donc ce n'est pas mon CPU.
 
 
Merci.

Reply

Marsh Posté le 19-01-2019 à 11:03:53   

Reply

Marsh Posté le 22-01-2019 à 10:52:56    

sur cpp.sh , cela semble fonctionner :  
 

Code :
  1. // Example program
  2. #include <iostream>
  3. #include <string>
  4. #include <stdio.h>
  5. #include <math.h>
  6. # define M_PI       3.14159265358979323846
  7. static double cos64[16], cos32[8], cos16[4], cos8[2], cos4[1];
  8. double *pnts[] = { cos64,cos32,cos16,cos8,cos4 };
  9. //double pnts[16];
  10. #ifndef DOUBLE_TO_REAL
  11. # define DOUBLE_TO_REAL(x)     (double)(x)
  12. #endif
  13. void prepare_decode_tables()
  14. {
  15. int i, k, kr, divv;
  16. double *costab;
  17. for (i = 0; i < 5; i++)
  18. {
  19. kr = 0x10 >> i; divv = 0x40 >> i;
  20. costab = pnts[i];
  21. for (k = 0; k < kr; k++)
  22. {
  23.  costab[k] = DOUBLE_TO_REAL(1.0 / (2.0 * cos(M_PI * ((double)k * 2.0 + 1.0) / 1.0 / (double)divv)));
  24.  printf("%d/%d  , %f", i , k , costab[k]);
  25. }
  26. printf("\n" );
  27. }
  28. }
  29. int main()
  30. {
  31.   prepare_decode_tables ();
  32.  
  33.   return 0;
  34. }


 

Code :
  1. 0/0  , 0.5006030/1  , 0.5054710/2  , 0.5154470/3  , 0.5310430/4  , 0.5531040/5  , 0.5829350/6  , 0.6225040/7  , 0.6748080/8  , 0.7445360/9  , 0.8393500/10  , 0.9725680/11  , 1.1694400/12  , 1.4841650/13  , 2.0577810/14  , 3.4076080/15  , 10.190008
  2. 1/0  , 0.5024191/1  , 0.5224991/2  , 0.5669441/3  , 0.6468221/4  , 0.7881551/5  , 1.0606781/6  , 1.7224471/7  , 5.101149
  3. 2/0  , 0.5097962/1  , 0.6013452/2  , 0.8999762/3  , 2.562915
  4. 3/0  , 0.5411963/1  , 1.306563
  5. 4/0  , 0.707107

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed