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

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