Test: Fix math suite build on Win32.

The cosine precision test now uses an array of double and the result
gets truncated instead of casted to signed int64.
main
Pierre Wendling 2022-05-16 20:02:24 -04:00 committed by Sam Lantinga
parent adb445eafb
commit b06eda55e9
1 changed files with 10 additions and 8 deletions

View File

@ -1792,6 +1792,8 @@ cos_regularCases(void *args)
/**
* \brief Checks cosine precision for the first 10 decimals.
*
* This function depends on SDL_floor functioning.
*/
static int
cos_precisionTest(void *args)
@ -1800,16 +1802,16 @@ cos_precisionTest(void *args)
Uint32 iterations = 20;
double angle = 0.0;
double step = 2.0 * M_PI / iterations;
const Sint64 expected[] = {
10000000000, 9510565162, 8090169943, 5877852522, 3090169943,
0, -3090169943, -5877852522, -8090169943, -9510565162,
-10000000000, -9510565162, -8090169943, -5877852522, -3090169943,
0, 3090169943, 5877852522, 8090169943, 9510565162
const double expected[] = {
10000000000.0, 9510565162.0, 8090169943.0, 5877852522.0, 3090169943.0,
0.0, -3090169943.0, -5877852522.0, -8090169943.0, -9510565162.0,
-10000000000.0, -9510565162.0, -8090169943.0, -5877852522.0, -3090169943.0,
0.0, 3090169943.0, 5877852522.0, 8090169943.0, 9510565162.0
};
for (i = 0; i < iterations; i++, angle += step) {
Sint64 result = (Sint64) (SDL_cos(angle) * 10000000000);
SDLTest_AssertCheck(result == expected[i],
"Cos(%f), expected %lld, got %lld",
double result = SDL_cos(angle) * 1.0E10;
SDLTest_AssertCheck(SDL_trunc(result) == expected[i],
"Cos(%f), expected %f, got %f",
angle, expected[i], result);
}
return TEST_COMPLETED;