diff options
Diffstat (limited to 'include/ruby/missing.h')
| -rw-r--r-- | include/ruby/missing.h | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/include/ruby/missing.h b/include/ruby/missing.h index 3474ca256f..03657042ce 100644 --- a/include/ruby/missing.h +++ b/include/ruby/missing.h @@ -136,7 +136,7 @@ RUBY_EXTERN double lgamma_r(double, int *); RUBY_EXTERN double cbrt(double); #endif -#if !defined(HAVE_INFINITY) || !defined(HAVE_NAN) +#if !defined(INFINITY) || !defined(NAN) union bytesequence4_or_float { unsigned char bytesequence[4]; float float_value; @@ -147,12 +147,18 @@ union bytesequence4_or_float { /** @internal */ RUBY_EXTERN const union bytesequence4_or_float rb_infinity; # define INFINITY (rb_infinity.float_value) +# define USE_RB_INFINITY 1 #endif #ifndef NAN /** @internal */ RUBY_EXTERN const union bytesequence4_or_float rb_nan; # define NAN (rb_nan.float_value) +# define USE_RB_NAN 1 +#endif + +#ifndef HUGE_VAL +# define HUGE_VAL ((double)INFINITY) #endif #ifndef isinf @@ -162,6 +168,8 @@ RUBY_EXTERN const union bytesequence4_or_float rb_nan; # include <ieeefp.h> # endif # define isinf(x) (!finite(x) && !isnan(x)) +# elif defined(__cplusplus) && __cplusplus >= 201103L +# include <cmath> // it must include constexpr bool isinf(double); # else RUBY_EXTERN int isinf(double); # endif @@ -170,7 +178,11 @@ RUBY_EXTERN int isinf(double); #ifndef isnan # ifndef HAVE_ISNAN +# if defined(__cplusplus) && __cplusplus >= 201103L +# include <cmath> // it must include constexpr bool isnan(double); +# else RUBY_EXTERN int isnan(double); +# endif # endif #endif @@ -181,6 +193,10 @@ RUBY_EXTERN int isnan(double); # endif #endif +#ifndef HAVE_NAN +RUBY_EXTERN double nan(const char *); +#endif + #ifndef HAVE_NEXTAFTER RUBY_EXTERN double nextafter(double x, double y); #endif @@ -214,12 +230,6 @@ RUBY_EXTERN char *strerror(int); RUBY_EXTERN char *strstr(const char *, const char *); #endif -/* -#ifndef HAVE_STRTOL -RUBY_EXTERN long strtol(const char *, char **, int); -#endif -*/ - #ifndef HAVE_STRLCPY RUBY_EXTERN size_t strlcpy(char *, const char*, size_t); #endif |
