mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Remove custom implementation for inifinity and NAN as we can now rely on C99
Those ZEND_* constant variant are now identical to their C counterpart, we may considering removing them in the future.
This commit is contained in:
parent
2d0b0d6448
commit
67f85573c5
1 changed files with 2 additions and 42 deletions
|
@ -438,49 +438,9 @@ char *alloca();
|
|||
#define ZEND_BIT_TEST(bits, bit) \
|
||||
(((bits)[(bit) / (sizeof((bits)[0])*8)] >> ((bit) & (sizeof((bits)[0])*8-1))) & 1)
|
||||
|
||||
/* We always define a function, even if there's a macro or expression we could
|
||||
* alias, so that using it in contexts where we can't make function calls
|
||||
* won't fail to compile on some machines and not others.
|
||||
*/
|
||||
static zend_always_inline double _zend_get_inf(void) /* {{{ */
|
||||
{
|
||||
#ifdef INFINITY
|
||||
return INFINITY;
|
||||
#elif HAVE_HUGE_VAL_INF
|
||||
return HUGE_VAL;
|
||||
#elif defined(__i386__) || defined(_X86_) || defined(ALPHA) || defined(_ALPHA) || defined(__alpha)
|
||||
# define _zend_DOUBLE_INFINITY_HIGH 0x7ff00000
|
||||
double val = 0.0;
|
||||
((uint32_t*)&val)[1] = _zend_DOUBLE_INFINITY_HIGH;
|
||||
((uint32_t*)&val)[0] = 0;
|
||||
return val;
|
||||
#elif HAVE_ATOF_ACCEPTS_INF
|
||||
return atof("INF");
|
||||
#else
|
||||
return 1.0/0.0;
|
||||
#endif
|
||||
} /* }}} */
|
||||
#define ZEND_INFINITY (_zend_get_inf())
|
||||
#define ZEND_INFINITY INFINITY
|
||||
|
||||
static zend_always_inline double _zend_get_nan(void) /* {{{ */
|
||||
{
|
||||
#ifdef NAN
|
||||
return NAN;
|
||||
#elif HAVE_HUGE_VAL_NAN
|
||||
return HUGE_VAL + -HUGE_VAL;
|
||||
#elif defined(__i386__) || defined(_X86_) || defined(ALPHA) || defined(_ALPHA) || defined(__alpha)
|
||||
# define _zend_DOUBLE_QUIET_NAN_HIGH 0xfff80000
|
||||
double val = 0.0;
|
||||
((uint32_t*)&val)[1] = _zend_DOUBLE_QUIET_NAN_HIGH;
|
||||
((uint32_t*)&val)[0] = 0;
|
||||
return val;
|
||||
#elif HAVE_ATOF_ACCEPTS_NAN
|
||||
return atof("NAN");
|
||||
#else
|
||||
return 0.0/0.0;
|
||||
#endif
|
||||
} /* }}} */
|
||||
#define ZEND_NAN (_zend_get_nan())
|
||||
#define ZEND_NAN NAN
|
||||
|
||||
#define ZEND_STRL(str) (str), (sizeof(str)-1)
|
||||
#define ZEND_STRS(str) (str), (sizeof(str))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue