1 #define MAX_DOUBLE 1.7976931348623158e+308
2 #define MIN_DOUBLE 2.2250738585072014e-308
4 double _xnextafter( double __x
, double __y
)
6 double_t
*x
= ( double_t
*)&__x
;
9 double_t
*e
= (double_t
*)&__e
;
12 if ( _isnan(__x
) || _isinf(__x
) )
19 // don't go to infinity just by adding
21 if ( _isinf(__y
) && fabs(__x
) >= MAX_DOUBLE
)
24 if ( !_isinf(__y
) && fabs(__x
- __y
) <= MIN_DOUBLE
)
32 if ( x
->exponent
>= 53 )
33 e
->exponent
= x
->exponent
- 52;
37 if ( fabs(__x
) < fabs(__y
) )