#include "realcnvt.h" /* converts IEEE 8-byte real to basic 8-byte real */ void doubletobasdble(basdble *New, double Old) { char Sign; int Exp; int X; unsigned char *NewNum, *OldNum; NewNum = (char *) New; OldNum = (char *) &Old; Sign = OldNum[7] & 0x80; Exp = ((OldNum[7] & 0x7F) << 4) + (OldNum[6] >> 4); if (Exp) Exp += 0x81 - 0x3FF; for (X = 6; X >= 0; X--) { NewNum[X] = OldNum[X] << 4; NewNum[X] |= OldNum[X-1] >> 4; } for (X = 0; X < 6; X++) { NewNum[X] >>= 1; NewNum[X] |= NewNum[X+1] << 7; } NewNum[6] >>= 1; NewNum[6] |= Sign; NewNum[7] = Exp; }