home *** CD-ROM | disk | FTP | other *** search
- #include "longlong.h"
-
- #define HIGH_HALFWORD_COEFF (((long long) 1) << (BITS_PER_WORD / 2))
- #define HIGH_WORD_COEFF (((long long) 1) << BITS_PER_WORD)
-
- double
- __floatdidf (u)
- long long u;
- {
- double d;
- int negate = 0;
-
- if (u < 0)
- u = -u, negate = 1;
-
- d = (unsigned int) (u >> BITS_PER_WORD);
- d *= HIGH_HALFWORD_COEFF;
- d *= HIGH_HALFWORD_COEFF;
- d += (unsigned int) (u & (HIGH_WORD_COEFF - 1));
-
- return (negate ? -d : d);
- }
-