Module Name: src Committed By: kre Date: Thu May 2 03:30:07 UTC 2024
Modified Files: src/tests/lib/libm: t_fe_round.c Log Message: Use intmax_t instead of long int when trying to represent very large integers (10^50 or so), so we don't exceed the capacity of systems where long int is only 32 bits. Hopefully will unbreak the i386 build, perhaps others. To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/tests/lib/libm/t_fe_round.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/tests/lib/libm/t_fe_round.c diff -u src/tests/lib/libm/t_fe_round.c:1.11 src/tests/lib/libm/t_fe_round.c:1.12 --- src/tests/lib/libm/t_fe_round.c:1.11 Thu May 2 00:01:48 2024 +++ src/tests/lib/libm/t_fe_round.c Thu May 2 03:30:07 2024 @@ -9,6 +9,7 @@ #include <fenv.h> #ifdef __HAVE_FENV #include <math.h> +#include <stdint.h> #include <stdio.h> #include <stdlib.h> @@ -145,24 +146,28 @@ ATF_TC_BODY(fe_nearbyint, tc) #ifdef __HAVE_LONG_DOUBLE +#define IM intmax_t + /* * Use one bit more than fits in IEEE 754 binary64. */ static const struct { int round_mode; long double input; - long int expected; + IM expected; } valuesl[] = { - { FE_TOWARDZERO, 0x2.00000000000008p+52L, 0x20000000000000 }, - { FE_DOWNWARD, 0x2.00000000000008p+52L, 0x20000000000000 }, - { FE_UPWARD, 0x2.00000000000008p+52L, 0x20000000000001 }, - { FE_TONEAREST, 0x2.00000000000008p+52L, 0x20000000000000 }, - { FE_TOWARDZERO, 0x2.00000000000018p+52L, 0x20000000000001 }, - { FE_DOWNWARD, 0x2.00000000000018p+52L, 0x20000000000001 }, - { FE_UPWARD, 0x2.00000000000018p+52L, 0x20000000000002 }, - { FE_TONEAREST, 0x2.00000000000018p+52L, 0x20000000000002 }, + { FE_TOWARDZERO, 0x2.00000000000008p+52L, (IM)0x20000000000000 }, + { FE_DOWNWARD, 0x2.00000000000008p+52L, (IM)0x20000000000000 }, + { FE_UPWARD, 0x2.00000000000008p+52L, (IM)0x20000000000001 }, + { FE_TONEAREST, 0x2.00000000000008p+52L, (IM)0x20000000000000 }, + { FE_TOWARDZERO, 0x2.00000000000018p+52L, (IM)0x20000000000001 }, + { FE_DOWNWARD, 0x2.00000000000018p+52L, (IM)0x20000000000001 }, + { FE_UPWARD, 0x2.00000000000018p+52L, (IM)0x20000000000002 }, + { FE_TONEAREST, 0x2.00000000000018p+52L, (IM)0x20000000000002 }, }; +#undef IM + ATF_TC(fe_nearbyintl); ATF_TC_HEAD(fe_nearbyintl, tc) { @@ -183,7 +188,7 @@ ATF_TC_BODY(fe_nearbyintl, tc) "%s nearbyintl(%Lf) has fractional part %Lf", rmname(values[i].round_mode), valuesl[i].input, fpart); ATF_CHECK_MSG((long int)received == valuesl[i].expected, - "%s [%u] nearbyint(%Lf): got %Lf, expected %ld", + "%s [%u] nearbyint(%Lf): got %Lf, expected %jd", rmname(values[i].round_mode), i, valuesl[i].input, received, valuesl[i].expected);