]>
Commit | Line | Data |
---|---|---|
34ff0b99 | 1 | // -*- C++ -*- forwarding header. |
40e5dd58 | 2 | |
83ffe9cd | 3 | // Copyright (C) 2000-2023 Free Software Foundation, Inc. |
40e5dd58 BK |
4 | // |
5 | // This file is part of the GNU ISO C++ Library. This library is free | |
6 | // software; you can redistribute it and/or modify it under the | |
7 | // terms of the GNU General Public License as published by the | |
748086b7 | 8 | // Free Software Foundation; either version 3, or (at your option) |
40e5dd58 BK |
9 | // any later version. |
10 | ||
11 | // This library is distributed in the hope that it will be useful, | |
12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 | // GNU General Public License for more details. | |
15 | ||
748086b7 JJ |
16 | // Under Section 7 of GPL version 3, you are granted additional |
17 | // permissions described in the GCC Runtime Library Exception, version | |
18 | // 3.1, as published by the Free Software Foundation. | |
40e5dd58 | 19 | |
748086b7 JJ |
20 | // You should have received a copy of the GNU General Public License and |
21 | // a copy of the GCC Runtime Library Exception along with this program; | |
22 | // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
23 | // <http://www.gnu.org/licenses/>. | |
40e5dd58 BK |
24 | |
25 | // | |
26 | // ISO C++ 14882: 26.5 C library | |
27 | // | |
28 | ||
5f697f7a BK |
29 | #ifndef _GLIBCXX_CMATH |
30 | #define _GLIBCXX_CMATH 1 | |
7b74e24e | 31 | |
4bc95009 | 32 | #pragma GCC system_header |
34ff0b99 | 33 | |
8081da07 BK |
34 | #include <bits/c++config.h> |
35 | ||
34ff0b99 | 36 | #include_next <math.h> |
40e5dd58 | 37 | |
8081da07 BK |
38 | // Get rid of those macros defined in <math.h> in lieu of real functions. |
39 | #undef abs | |
40 | #undef div | |
41 | #undef acos | |
42 | #undef asin | |
43 | #undef atan | |
44 | #undef atan2 | |
45 | #undef ceil | |
46 | #undef cos | |
47 | #undef cosh | |
48 | #undef exp | |
49 | #undef fabs | |
50 | #undef floor | |
51 | #undef fmod | |
52 | #undef frexp | |
53 | #undef ldexp | |
54 | #undef log | |
55 | #undef log10 | |
56 | #undef modf | |
57 | #undef pow | |
58 | #undef sin | |
59 | #undef sinh | |
60 | #undef sqrt | |
61 | #undef tan | |
62 | #undef tanh | |
63 | ||
64 | #undef fpclassify | |
65 | #undef isfinite | |
66 | #undef isinf | |
67 | #undef isnan | |
68 | #undef isnormal | |
69 | #undef signbit | |
70 | #undef isgreater | |
71 | #undef isgreaterequal | |
72 | #undef isless | |
73 | #undef islessequal | |
74 | #undef islessgreater | |
75 | #undef isunordered | |
76 | ||
12ffa228 | 77 | namespace std _GLIBCXX_VISIBILITY(default) |
8081da07 BK |
78 | { |
79 | inline double | |
80 | abs(double __x) | |
81 | { return __builtin_fabs(__x); } | |
82 | ||
83 | inline float | |
84 | abs(float __x) | |
85 | { return __builtin_fabsf(__x); } | |
86 | ||
87 | inline long double | |
88 | abs(long double __x) | |
89 | { return __builtin_fabsl(__x); } | |
90 | ||
3d7c150e | 91 | #if _GLIBCXX_HAVE_MODFF |
7b74e24e | 92 | inline float |
8081da07 BK |
93 | modf(float __x, float* __iptr) { return modff(__x, __iptr); } |
94 | #else | |
7b74e24e | 95 | inline float |
8081da07 BK |
96 | modf(float __x, float* __iptr) |
97 | { | |
98 | double __tmp; | |
99 | double __res = modf(static_cast<double>(__x), &__tmp); | |
100 | *__iptr = static_cast<float>(__tmp); | |
101 | return __res; | |
102 | } | |
103 | #endif | |
104 | ||
3d7c150e | 105 | #if _GLIBCXX_HAVE_MODFL |
7b74e24e | 106 | inline long double |
8081da07 BK |
107 | modf(long double __x, long double* __iptr) { return modfl(__x, __iptr); } |
108 | #else | |
7b74e24e BI |
109 | inline long double |
110 | modf(long double __x, long double* __iptr) | |
111 | { | |
8081da07 BK |
112 | double __tmp; |
113 | double __res = modf(static_cast<double>(__x), &__tmp); | |
114 | * __iptr = static_cast<long double>(__tmp); | |
115 | return __res; | |
116 | } | |
117 | #endif | |
118 | } | |
a30dbb39 | 119 | #endif |