2 Copyright (C) 1995, 1996 Christian von Roques */
4 /* This file was derived from the GNU C Library's ieee754.h which
5 carried the following copyright notice:
7 Copyright (C) 1992 Free Software Foundation, Inc.
9 The GNU C Library is free software; you can redistribute it and/or
10 modify it under the terms of the GNU Library General Public License as
11 published by the Free Software Foundation; either version 2 of the
12 License, or (at your option) any later version.
14 The GNU C Library is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 Library General Public License for more details.
19 You should have received a copy of the GNU Library General Public
20 License along with the GNU C Library; see the file COPYING.LIB. If
21 not, write to the Free Software Foundation, Inc., 675 Mass Ave,
22 Cambridge, MA 02139, USA. */
24 /* @@@ This is completely non-portable! ISO/IEC DIS 9899, section
25 3.5.2.1: An implementation may allocate any addressable storage
26 unit large enough to hold a bit-field. If enough space remains, a
27 bit-field that immediately follows another bit-field in a structure
28 shall be packed into adjacent bits of the same unit. If
29 insufficient space remains, whether a bit-field that does not fit
30 is put into the next unit or overlaps adjacent units is
31 implementation-defined. The order of allocation of bit-fields
32 within a unit (high-order to low-order or low-order to high-order)
33 is implementation-defined. */
47 /* This is the IEEE 754 double-precision format. */
50 #ifdef WORDS_BIGENDIAN
51 unsigned int negative:1;
52 unsigned int exponent:11;
53 unsigned int mantissa0:20;
54 unsigned int mantissa1:32;
56 unsigned int mantissa1:32;
57 unsigned int mantissa0:20;
58 unsigned int exponent:11;
59 unsigned int negative:1;
64 #ifdef WORDS_BIGENDIAN
65 unsigned int negative:1;
66 unsigned int exponent:11;
67 unsigned int quiet_nan:1;
68 unsigned int mantissa0:19;
69 unsigned int mantissa1:32;
71 unsigned int mantissa1:32;
72 unsigned int mantissa0:19;
73 unsigned int quiet_nan:1;
74 unsigned int exponent:11;
75 unsigned int negative:1;
80 /* bias added to exponent of ieee754_double */
81 #define _IEEE754_DOUBLE_BIAS 0x3ff
88 /* This is the ieee754 single-precision format. */
91 #ifdef WORDS_BIGENDIAN
92 unsigned int negative:1;
93 unsigned int exponent:8;
94 unsigned int mantissa:23;
96 unsigned int mantissa:23;
97 unsigned int exponent:8;
98 unsigned int negative:1;
101 /* This is for extracting information about NaNs. */
104 #ifdef WORDS_BIGENDIAN
105 unsigned int negative:1;
106 unsigned int exponent:8;
107 unsigned int quiet_nan:1;
108 unsigned int mantissa:22;
110 unsigned int mantissa:22;
111 unsigned int quiet_nan:1;
112 unsigned int exponent:8;
113 unsigned int negative:1;
118 /* bias added to exponent of ieee_float */
119 #define _IEEE754_FLOAT_BIAS 0x7f
121 #endif /* _IEEE754_H */