home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / LIBSRC.ZOO / libsrc / longlong / flotdidf.c < prev    next >
C/C++ Source or Header  |  1992-02-22  |  445b  |  23 lines

  1. #include "longlong.h"
  2.  
  3. #define HIGH_HALFWORD_COEFF (((long long) 1) << (BITS_PER_WORD / 2))
  4. #define HIGH_WORD_COEFF (((long long) 1) << BITS_PER_WORD)
  5.  
  6. double
  7. __floatdidf (u)
  8.      long long u;
  9. {
  10.   double d;
  11.   int negate = 0;
  12.  
  13.   if (u < 0)
  14.     u = -u, negate = 1;
  15.  
  16.   d = (unsigned int) (u >> BITS_PER_WORD);
  17.   d *= HIGH_HALFWORD_COEFF;
  18.   d *= HIGH_HALFWORD_COEFF;
  19.   d += (unsigned int) (u & (HIGH_WORD_COEFF - 1));
  20.  
  21.   return (negate ? -d : d);
  22. }
  23.