Explorar o código

Test: Check sqrt and atan against the epsilon.

On i686-linux, the `sqrt_regularCases` and `atan_limitCases` tests would
fail as the result was not precise enough.
Pierre Wendling %!s(int64=2) %!d(string=hai) anos
pai
achega
6bd3e0b189
Modificáronse 1 ficheiros con 6 adicións e 4 borrados
  1. 6 4
      test/testautomation_math.c

+ 6 - 4
test/testautomation_math.c

@@ -2,8 +2,8 @@
  * Math test suite
  */
 
-#include <math.h>
 #include <float.h>
+#include <math.h>
 
 #include "SDL.h"
 #include "SDL_test.h"
@@ -1802,7 +1802,7 @@ sqrt_regularCases(void *args)
         { 2887.12782400000014604302123188972473144531250, 53.732 },
         { 65600.0156250, 256.125 }
     };
-    return helper_dtod("Sqrt", SDL_sqrt, regular_cases, SDL_arraysize(regular_cases));
+    return helper_dtod_inexact("Sqrt", SDL_sqrt, regular_cases, SDL_arraysize(regular_cases));
 }
 
 /* SDL_scalbn tests functions */
@@ -2432,12 +2432,14 @@ atan_limitCases(void *args)
     double result;
 
     result = SDL_atan(INFINITY);
-    SDLTest_AssertCheck(M_PI / 2.0 == result,
+    SDLTest_AssertCheck((M_PI / 2.0) - EPSILON <= result &&
+                            result <= (M_PI / 2.0) + EPSILON,
                         "Atan(%f), expected %f, got %f",
                         INFINITY, M_PI / 2.0, result);
 
     result = SDL_atan(-INFINITY);
-    SDLTest_AssertCheck(-M_PI / 2.0 == result,
+    SDLTest_AssertCheck((-M_PI / 2.0) - EPSILON <= result &&
+                            result <= (-M_PI / 2.0) + EPSILON,
                         "Atan(%f), expected %f, got %f",
                         -INFINITY, -M_PI / 2.0, result);