From af96d7f55b107f42ce06c30203262f44b4957728 Mon Sep 17 00:00:00 2001 From: bel2125 Date: Sun, 27 Aug 2017 23:42:34 +0200 Subject: [PATCH] Add definitions for isnan, isinf and isfinite, in case they are missing --- tests/check_check_sub.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/tests/check_check_sub.c b/tests/check_check_sub.c index c446f387..ef0393bc 100644 --- a/tests/check_check_sub.c +++ b/tests/check_check_sub.c @@ -37,6 +37,40 @@ double NAN; #if !defined(INFINITY) double INFINITY; #endif +#if !defined(isnan) +int isnan(double d) { +#ifdef _MSC_VER + unsigned __int64 *p = &d, m = 0x7FF0000000000000; +#else + unsigned long long *p = &d, m = 0x7FF0000000000000; +#endif + if ((*p & m) != m) return 0; /* finite */ + *p &= 0x000FFFFFFFFFFFFF; /* mask exponent and sign */ + return *p != 0; +} +#endif +#if !defined(isinf) +int isinf(double d) { +#ifdef _MSC_VER + unsigned __int64 *p = &d, m = 0x7FF0000000000000; +#else + unsigned long long *p = &d, m = 0x7FF0000000000000; +#endif + *p &= 0x000FFFFFFFFFFFFF; /* mask exponent and sign */ + return *p == 0; +} +#endif +#if !defined(isfinite) +int isfinite(double d) { +#ifdef _MSC_VER + unsigned __int64 *p = &d, m = 0x7FF0000000000000; +#else + unsigned long long *p = &d, m = 0x7FF0000000000000; +#endif + return (*p & m) != m; +} +#endif + START_TEST(test_lno) {