]>
Commit | Line | Data |
---|---|---|
a86573f4 RH |
1 | /* Copyright (C) 1997, 1998, 1999, 2000, 2003, 2004 |
2 | Free Software Foundation, Inc. | |
1f205a47 UD |
3 | This file is part of the GNU C Library. |
4 | ||
5 | The GNU C Library is free software; you can redistribute it and/or | |
41bdb6e2 AJ |
6 | modify it under the terms of the GNU Lesser General Public |
7 | License as published by the Free Software Foundation; either | |
8 | version 2.1 of the License, or (at your option) any later version. | |
1f205a47 UD |
9 | |
10 | The GNU C Library is distributed in the hope that it will be useful, | |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
41bdb6e2 | 13 | Lesser General Public License for more details. |
1f205a47 | 14 | |
41bdb6e2 AJ |
15 | You should have received a copy of the GNU Lesser General Public |
16 | License along with the GNU C Library; if not, write to the Free | |
17 | Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA | |
18 | 02111-1307 USA. */ | |
1f205a47 | 19 | |
74eee886 | 20 | #if !defined _MATH_H && !defined _COMPLEX_H |
fe0ec73e | 21 | # error "Never use <bits/mathdef.h> directly; include <math.h> instead" |
5107cf1d | 22 | #endif |
1f205a47 UD |
23 | |
24 | /* FIXME! This file describes properties of the compiler, not the machine; | |
5107cf1d | 25 | it should not be part of libc! */ |
1f205a47 | 26 | |
b85697f6 UD |
27 | #if defined __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF |
28 | # define _MATH_H_MATHDEF 1 | |
29 | ||
74eee886 UD |
30 | # ifdef __GNUC__ |
31 | # if __STDC__ == 1 | |
1f205a47 | 32 | |
5107cf1d UD |
33 | /* In GNU or ANSI mode, gcc leaves `float' expressions as-is. */ |
34 | typedef float float_t; | |
35 | typedef double double_t; | |
1f205a47 | 36 | |
74eee886 | 37 | # else |
1f205a47 UD |
38 | |
39 | /* For `gcc -traditional', `float' expressions are evaluated as `double'. */ | |
5107cf1d UD |
40 | typedef double float_t; |
41 | typedef double double_t; | |
1f205a47 | 42 | |
74eee886 UD |
43 | # endif |
44 | # else | |
1f205a47 UD |
45 | |
46 | /* Wild guess at types for float_t and double_t. */ | |
47 | typedef double float_t; | |
48 | typedef double double_t; | |
49 | ||
74eee886 | 50 | # endif |
fe0ec73e | 51 | |
74015205 | 52 | /* The values returned by `ilogb' for 0 and NaN respectively. */ |
417bafec UD |
53 | # define FP_ILOGB0 (-2147483647) |
54 | # define FP_ILOGBNAN (2147483647) | |
74015205 | 55 | |
141749ca | 56 | #endif /* ISO C99 && MATH_H */ |
74eee886 UD |
57 | |
58 | #ifndef __NO_LONG_DOUBLE_MATH | |
59 | /* Signal that we do not really have a `long double'. The disables the | |
60 | declaration of all the `long double' function variants. */ | |
61 | # define __NO_LONG_DOUBLE_MATH 1 | |
62 | #endif | |
141749ca RH |
63 | |
64 | #if defined _COMPLEX_H && !defined _COMPLEX_H_MATHDEF | |
65 | # define _COMPLEX_H_MATHDEF 1 | |
66 | # if defined(__GNUC__) && !__GNUC_PREREQ(3,4) | |
67 | ||
68 | /* Due to an ABI change, we need to remap the complex float symbols. */ | |
69 | # define _Mdouble_ float | |
70 | # define __MATHCALL(function, args) \ | |
71 | __MATHDECL (_Complex float, function, args) | |
72 | # define __MATHDECL(type, function, args) \ | |
73 | __MATHDECL_1(type, function##f, args, __c1_##function##f); \ | |
74 | __MATHDECL_1(type, __##function##f, args, __c1_##function##f) | |
75 | # define __MATHDECL_1(type, function, args, alias) \ | |
76 | extern type function args __asm__(#alias) __THROW | |
77 | ||
78 | # include <bits/cmathcalls.h> | |
79 | ||
80 | # undef _Mdouble_ | |
81 | # undef __MATHCALL | |
82 | # undef __MATHDECL | |
83 | # undef __MATHDECL_1 | |
84 | ||
85 | # endif /* GNUC before 3.4 */ | |
86 | #endif /* COMPLEX_H */ |