home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / MAGAZINE / DDJ9309.ZIP / NETSQL.ZIP / DBLE_BD.C < prev    next >
Text File  |  1988-06-21  |  665b  |  33 lines

  1. #include "realcnvt.h"
  2.  
  3. /*  converts IEEE 8-byte real to basic 8-byte real  */
  4.  
  5. void doubletobasdble(basdble *New, double Old) {
  6.   char    Sign;
  7.   int     Exp;
  8.   int     X;
  9.   unsigned char *NewNum, *OldNum;
  10.  
  11.   NewNum = (char *) New;
  12.   OldNum = (char *) &Old;
  13.  
  14.   Sign = OldNum[7] & 0x80;
  15.   Exp  = ((OldNum[7] & 0x7F) << 4) + (OldNum[6] >> 4);
  16.   if (Exp)
  17.     Exp += 0x81 - 0x3FF;
  18.  
  19.   for (X = 6; X >= 0; X--) {
  20.     NewNum[X] = OldNum[X] << 4;
  21.     NewNum[X] |= OldNum[X-1] >> 4;
  22.   }
  23.  
  24.   for (X = 0; X < 6; X++) {
  25.     NewNum[X] >>= 1;
  26.     NewNum[X] |= NewNum[X+1] << 7;
  27.   }
  28.   NewNum[6] >>= 1;
  29.  
  30.   NewNum[6] |=  Sign;
  31.   NewNum[7] =   Exp;
  32. }
  33.