root / lab4 / .minix-src / include / sys / float_ieee754.h @ 13
History | View | Annotate | Download (5.35 KB)
1 |
/* $NetBSD: float_ieee754.h,v 1.11 2013/06/18 20:17:19 christos Exp $ */
|
---|---|
2 |
|
3 |
/*
|
4 |
* Copyright (c) 1992, 1993
|
5 |
* The Regents of the University of California. All rights reserved.
|
6 |
*
|
7 |
* Redistribution and use in source and binary forms, with or without
|
8 |
* modification, are permitted provided that the following conditions
|
9 |
* are met:
|
10 |
* 1. Redistributions of source code must retain the above copyright
|
11 |
* notice, this list of conditions and the following disclaimer.
|
12 |
* 2. Redistributions in binary form must reproduce the above copyright
|
13 |
* notice, this list of conditions and the following disclaimer in the
|
14 |
* documentation and/or other materials provided with the distribution.
|
15 |
* 3. Neither the name of the University nor the names of its contributors
|
16 |
* may be used to endorse or promote products derived from this software
|
17 |
* without specific prior written permission.
|
18 |
*
|
19 |
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
20 |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
21 |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
22 |
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
23 |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
24 |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
25 |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
26 |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
27 |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
28 |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
29 |
* SUCH DAMAGE.
|
30 |
*
|
31 |
* @(#)float.h 8.1 (Berkeley) 6/10/93
|
32 |
*/
|
33 |
|
34 |
/*
|
35 |
* NOTICE: This is not a standalone file. To use it, #include it in
|
36 |
* your port's float.h header.
|
37 |
*/
|
38 |
|
39 |
#ifndef _SYS_FLOAT_IEEE754_H_
|
40 |
#define _SYS_FLOAT_IEEE754_H_
|
41 |
|
42 |
#include <sys/cdefs.h> |
43 |
#include <sys/featuretest.h> |
44 |
|
45 |
/*
|
46 |
* feature macro to test for IEEE754
|
47 |
*/
|
48 |
#define _FLOAT_IEEE754 1 |
49 |
|
50 |
#if !defined(__ASSEMBLER__) && !defined(FLT_ROUNDS)
|
51 |
__BEGIN_DECLS |
52 |
extern int __flt_rounds(void); |
53 |
__END_DECLS |
54 |
#define FLT_ROUNDS __flt_rounds()
|
55 |
#endif
|
56 |
|
57 |
#if !defined(_ANSI_SOURCE) && !defined(_POSIX_C_SOURCE) && \
|
58 |
!defined(_XOPEN_SOURCE) || \ |
59 |
((__STDC_VERSION__ - 0) >= 199901L) || \ |
60 |
((_POSIX_C_SOURCE - 0) >= 200112L) || \ |
61 |
((_XOPEN_SOURCE - 0) >= 600) || \ |
62 |
defined(_ISOC99_SOURCE) || defined(_NETBSD_SOURCE) |
63 |
#ifndef FLT_EVAL_METHOD
|
64 |
#if __GNUC_PREREQ__(3, 3) |
65 |
#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
|
66 |
#endif /* GCC >= 3.3 */ |
67 |
#endif /* defined(FLT_EVAL_METHOD) */ |
68 |
#endif /* !defined(_ANSI_SOURCE) && ... */ |
69 |
|
70 |
#if __GNUC_PREREQ__(3, 3) |
71 |
/*
|
72 |
* GCC 3,3 and later provide builtins for the FLT, DBL, and LDBL constants.
|
73 |
*/
|
74 |
#define FLT_RADIX __FLT_RADIX__
|
75 |
|
76 |
#define FLT_MANT_DIG __FLT_MANT_DIG__
|
77 |
#define FLT_EPSILON __FLT_EPSILON__
|
78 |
#define FLT_DIG __FLT_DIG__
|
79 |
#define FLT_MIN_EXP __FLT_MIN_EXP__
|
80 |
#define FLT_MIN __FLT_MIN__
|
81 |
#define FLT_MIN_10_EXP __FLT_MIN_10_EXP__
|
82 |
#define FLT_MAX_EXP __FLT_MAX_EXP__
|
83 |
#define FLT_MAX __FLT_MAX__
|
84 |
#define FLT_MAX_10_EXP __FLT_MAX_10_EXP__
|
85 |
|
86 |
#define DBL_MANT_DIG __DBL_MANT_DIG__
|
87 |
#define DBL_EPSILON __DBL_EPSILON__
|
88 |
#define DBL_DIG __DBL_DIG__
|
89 |
#define DBL_MIN_EXP __DBL_MIN_EXP__
|
90 |
#define DBL_MIN __DBL_MIN__
|
91 |
#define DBL_MIN_10_EXP __DBL_MIN_10_EXP__
|
92 |
#define DBL_MAX_EXP __DBL_MAX_EXP__
|
93 |
#define DBL_MAX __DBL_MAX__
|
94 |
#define DBL_MAX_10_EXP __DBL_MAX_10_EXP__
|
95 |
#else /* GCC < 3.3 */ |
96 |
#define FLT_RADIX 2 /* b */ |
97 |
|
98 |
#define FLT_MANT_DIG 24 /* p */ |
99 |
#define FLT_DIG 6 /* floor((p-1)*log10(b))+(b == 10) */ |
100 |
#define FLT_MIN_EXP (-125) /* emin */ |
101 |
#define FLT_MIN_10_EXP (-37) /* ceil(log10(b**(emin-1))) */ |
102 |
#define FLT_MAX_EXP 128 /* emax */ |
103 |
#define FLT_MAX_10_EXP 38 /* floor(log10((1-b**(-p))*b**emax)) */ |
104 |
#if __STDC_VERSION__ >= 199901L |
105 |
#define FLT_EPSILON 0x1.0p-23F |
106 |
#define FLT_MIN 0x1.0p-126F |
107 |
#define FLT_MAX 0x1.fffffep+127F |
108 |
#else
|
109 |
#define FLT_EPSILON 1.19209290E-7F /* b**(1-p) */ |
110 |
#define FLT_MIN 1.17549435E-38F /* b**(emin-1) */ |
111 |
#define FLT_MAX 3.40282347E+38F /* (1-b**(-p))*b**emax */ |
112 |
#endif
|
113 |
|
114 |
#define DBL_MANT_DIG 53 |
115 |
#define DBL_DIG 15 |
116 |
#define DBL_MIN_EXP (-1021) |
117 |
#define DBL_MIN_10_EXP (-307) |
118 |
#define DBL_MAX_EXP 1024 |
119 |
#define DBL_MAX_10_EXP 308 |
120 |
|
121 |
#if __STDC_VERSION__ >= 199901L |
122 |
#define DBL_EPSILON 0x1.0p-52 |
123 |
#define DBL_MIN 0x1.0p-1022 |
124 |
#define DBL_MAX 0x1.fffffffffffffp+1023 |
125 |
#else
|
126 |
#define DBL_EPSILON 2.2204460492503131E-16 |
127 |
#define DBL_MIN 2.2250738585072014E-308 |
128 |
#define DBL_MAX 1.7976931348623157E+308 |
129 |
#endif
|
130 |
#endif /* GCC < 3.3 */ |
131 |
/*
|
132 |
* If no extended-precision type is defined by the machine-dependent
|
133 |
* header including this, default to `long double' being double-precision.
|
134 |
*/
|
135 |
#ifndef LDBL_MANT_DIG
|
136 |
#define LDBL_MANT_DIG DBL_MANT_DIG
|
137 |
#define LDBL_EPSILON DBL_EPSILON
|
138 |
#define LDBL_DIG DBL_DIG
|
139 |
#define LDBL_MIN_EXP DBL_MIN_EXP
|
140 |
#define LDBL_MIN DBL_MIN
|
141 |
#define LDBL_MIN_10_EXP DBL_MIN_10_EXP
|
142 |
#define LDBL_MAX_EXP DBL_MAX_EXP
|
143 |
#define LDBL_MAX DBL_MAX
|
144 |
#define LDBL_MAX_10_EXP DBL_MAX_10_EXP
|
145 |
#if !defined(_ANSI_SOURCE) && !defined(_POSIX_C_SOURCE) && \
|
146 |
!defined(_XOPEN_SOURCE) || \ |
147 |
((__STDC_VERSION__ - 0) >= 199901L) || \ |
148 |
((_POSIX_C_SOURCE - 0) >= 200112L) || \ |
149 |
((_XOPEN_SOURCE - 0) >= 600) || \ |
150 |
defined(_ISOC99_SOURCE) || defined(_NETBSD_SOURCE) |
151 |
#if __GNUC_PREREQ__(3, 3) |
152 |
#define DECIMAL_DIG __DECIMAL_DIG__
|
153 |
#else
|
154 |
#define DECIMAL_DIG 17 /* ceil((1+p*log10(b))-(b==10) */ |
155 |
#endif
|
156 |
#endif /* !defined(_ANSI_SOURCE) && ... */ |
157 |
#endif /* LDBL_MANT_DIG */ |
158 |
|
159 |
#endif /* _SYS_FLOAT_IEEE754_H_ */ |