|
|
@@ -0,0 +1,62 @@ |
|
|
|
/* Copyright (C) 1989-1991 Apple Computer, Inc. |
|
|
|
* |
|
|
|
* All rights reserved. |
|
|
|
* |
|
|
|
* Warranty Information |
|
|
|
* Even though Apple has reviewed this software, Apple makes no warranty |
|
|
|
* or representation, either express or implied, with respect to this |
|
|
|
* software, its quality, accuracy, merchantability, or fitness for a |
|
|
|
* particular purpose. As a result, this software is provided "as is," |
|
|
|
* and you, its user, are assuming the entire risk as to its quality |
|
|
|
* and accuracy. |
|
|
|
* |
|
|
|
* This code may be used and freely distributed as long as it includes |
|
|
|
* this copyright notice and the above warranty information. |
|
|
|
* |
|
|
|
* Machine-independent I/O routines for IEEE floating-point numbers. |
|
|
|
* |
|
|
|
* NaN's and infinities are converted to HUGE_VAL or HUGE, which |
|
|
|
* happens to be infinity on IEEE machines. Unfortunately, it is |
|
|
|
* impossible to preserve NaN's in a machine-independent way. |
|
|
|
* Infinities are, however, preserved on IEEE machines. |
|
|
|
* |
|
|
|
* These routines have been tested on the following machines: |
|
|
|
* Apple Macintosh, MPW 3.1 C compiler |
|
|
|
* Apple Macintosh, THINK C compiler |
|
|
|
* Silicon Graphics IRIS, MIPS compiler |
|
|
|
* Cray X/MP and Y/MP |
|
|
|
* Digital Equipment VAX |
|
|
|
* Sequent Balance (Multiprocesor 386) |
|
|
|
* NeXT |
|
|
|
* |
|
|
|
* |
|
|
|
* Implemented by Malcolm Slaney and Ken Turkowski. |
|
|
|
* |
|
|
|
* Malcolm Slaney contributions during 1988-1990 include big- and little- |
|
|
|
* endian file I/O, conversion to and from Motorola's extended 80-bit |
|
|
|
* floating-point format, and conversions to and from IEEE single- |
|
|
|
* precision floating-point format. |
|
|
|
* |
|
|
|
* In 1991, Ken Turkowski implemented the conversions to and from |
|
|
|
* IEEE double-precision format, added more precision to the extended |
|
|
|
* conversions, and accommodated conversions involving +/- infinity, |
|
|
|
* NaN's, and denormalized numbers. |
|
|
|
*/ |
|
|
|
#ifndef IEEE_H |
|
|
|
#define IEEE_H |
|
|
|
|
|
|
|
#ifndef applec |
|
|
|
typedef double defdouble; |
|
|
|
#else applec |
|
|
|
typedef long double defdouble; |
|
|
|
#endif applec |
|
|
|
|
|
|
|
defdouble ConvertFromIeeeSingle( char *bytes); |
|
|
|
defdouble ConvertFromIeeeDouble( char *bytes); |
|
|
|
defdouble ConvertFromIeeeExtended(char *bytes); |
|
|
|
|
|
|
|
void ConvertToIeeeSingle( defdouble num, char *bytes); |
|
|
|
void ConvertToIeeeDouble( defdouble num, char *bytes); |
|
|
|
void ConvertToIeeeExtended(defdouble num, char *bytes); |
|
|
|
|
|
|
|
#endif |