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

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