… | |
… | |
651 | if (x == 0e0 ) return 0; |
651 | if (x == 0e0 ) return 0; |
652 | if (x > +1.79769313486231470e+308) return 0x7ff0000000000000U; |
652 | if (x > +1.79769313486231470e+308) return 0x7ff0000000000000U; |
653 | if (x < -1.79769313486231470e+308) return 0xfff0000000000000U; |
653 | if (x < -1.79769313486231470e+308) return 0xfff0000000000000U; |
654 | if (x != x ) return 0X7ff7ffffffffffffU; |
654 | if (x != x ) return 0X7ff7ffffffffffffU; |
655 | |
655 | |
656 | m = frexpf (x, &e) * 0x1000000U; |
|
|
657 | m = frexp (x, &e) * 0x20000000000000U; |
656 | m = frexp (x, &e) * 0x20000000000000U; |
658 | |
657 | |
659 | r = m & 0x8000000000000000;; |
658 | r = m & 0x8000000000000000;; |
660 | |
659 | |
661 | if (r) |
660 | if (r) |
… | |
… | |
696 | if (e) |
695 | if (e) |
697 | x |= 0x10000000000000U; |
696 | x |= 0x10000000000000U; |
698 | else |
697 | else |
699 | e = 1; |
698 | e = 1; |
700 | |
699 | |
701 | /* we distrust ldexpf a bit and do the 2**-53 scaling by an extra multiply */ |
700 | /* we distrust ldexp a bit and do the 2**-53 scaling by an extra multiply */ |
702 | r = ldexp (x * (1. / 0x20000000000000U), e - 1022); |
701 | r = ldexp (x * (1. / 0x20000000000000U), e - 1022); |
703 | |
702 | |
704 | r = neg ? -r : r; |
703 | r = neg ? -r : r; |
705 | #endif |
704 | #endif |
706 | |
705 | |