- u.e = x;
- expsign = u.xbits.expsign;
- expt = expsign & 0x7fff;
- if (expt >= 0x3fff) { /* |x| >= 1 or nan */
- if (expt == 0x3fff &&
- ((u.bits.manh&~LDBL_NBIT)|u.bits.manl) == 0)
- /* asin(+-1)=+-pi/2 with inexact */
- return x*pio2_hi + 0x1p-1000;
+ if (e >= 0x3fff) { /* |x| >= 1 or nan */
+ /* asin(+-1)=+-pi/2 with inexact */
+ if (x == 1 || x == -1)
+ return x*pio2_hi + 0x1p-120f;