diff options
author | Nobuyoshi Nakada <[email protected]> | 2021-08-27 10:52:02 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <[email protected]> | 2021-08-27 12:41:30 +0900 |
commit | 04be8e84db1cf4f8b2a7bc7679eda4336da75d43 (patch) | |
tree | c7914614f4a5cf91109f7893b87ff9e5d143ad0e /missing/isinf.c | |
parent | 37114673623c4d2b1d9f2c2ddfffba070b2d96e6 (diff) |
Use C99-defined macros to classify a floating-point number
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/4783
Diffstat (limited to 'missing/isinf.c')
-rw-r--r-- | missing/isinf.c | 69 |
1 files changed, 0 insertions, 69 deletions
diff --git a/missing/isinf.c b/missing/isinf.c deleted file mode 100644 index ba24b7768b..0000000000 --- a/missing/isinf.c +++ /dev/null @@ -1,69 +0,0 @@ -/* public domain rewrite of isinf(3) */ - -#ifdef __osf__ - -#define _IEEE 1 -#include <nan.h> - -int -isinf(double n) -{ - if (IsNANorINF(n) && IsINF(n)) { - return 1; - } - else { - return 0; - } -} - -#else - -#include "ruby/internal/config.h" - -#if defined(HAVE_FINITE) && defined(HAVE_ISNAN) - -#include <math.h> -#ifdef HAVE_IEEEFP_H -#include <ieeefp.h> -#endif - -/* - * isinf may be provided only as a macro. - * ex. HP-UX, Solaris 10 - * http://www.gnu.org/software/automake/manual/autoconf/Function-Portability.html - */ -#ifndef isinf -int -isinf(double n) -{ - return (!finite(n) && !isnan(n)); -} -#endif - -#else - -#ifdef HAVE_STRING_H -# include <string.h> -#else -# include <strings.h> -#endif - -static double zero(void) { return 0.0; } -static double one (void) { return 1.0; } -static double inf (void) { return one() / zero(); } - -int -isinf(double n) -{ - static double pinf = 0.0; - static double ninf = 0.0; - - if (pinf == 0.0) { - pinf = inf(); - ninf = -pinf; - } - return memcmp(&n, &pinf, sizeof n) == 0 - || memcmp(&n, &ninf, sizeof n) == 0; -} -#endif -#endif |