- return x*pio2_hi + x*pio2_lo;
- return (x-x)/(x-x); /* asin(|x|>1) is NaN */
- } else if (ix < 0x3fe00000) { /* |x|<0.5 */
- if (ix < 0x3e500000) { /* if |x| < 2**-26 */
- if (huge+x > 1.0)
- return x; /* return x with inexact if x!=0*/
+ return x*pio2_hi + 0x1p-120f;
+ return 0/(x-x);
+ }
+ /* |x| < 0.5 */
+ if (ix < 0x3fe00000) {
+ if (ix < 0x3e500000) {
+ /* |x|<0x1p-26, return x with inexact if x!=0*/
+ FORCE_EVAL(x + 0x1p120f);
+ return x;