]>
Commit | Line | Data |
---|---|---|
d50d98ed | 1 | // -*- C++ -*- forwarding header. |
5cb4c1ea | 2 | |
f1717362 | 3 | // Copyright (C) 2000-2016 Free Software Foundation, Inc. |
5cb4c1ea | 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 | |
6bc9506f | 8 | // Free Software Foundation; either version 3, or (at your option) |
5cb4c1ea | 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 | ||
6bc9506f | 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. | |
5cb4c1ea | 19 | |
6bc9506f | 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/>. | |
5cb4c1ea | 24 | |
25 | // | |
26 | // ISO C++ 14882: 26.5 C library | |
27 | // | |
28 | ||
9449c28d | 29 | #ifndef _GLIBCXX_CMATH |
30 | #define _GLIBCXX_CMATH 1 | |
c8661dc4 | 31 | |
36badd1d | 32 | #pragma GCC system_header |
d50d98ed | 33 | |
75fbf2f7 | 34 | #include <bits/c++config.h> |
35 | ||
d50d98ed | 36 | #include_next <math.h> |
5cb4c1ea | 37 | |
75fbf2f7 | 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 | ||
2948dd21 | 77 | namespace std _GLIBCXX_VISIBILITY(default) |
75fbf2f7 | 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 | ||
5a64d8cf | 91 | #if _GLIBCXX_HAVE_MODFF |
c8661dc4 | 92 | inline float |
75fbf2f7 | 93 | modf(float __x, float* __iptr) { return modff(__x, __iptr); } |
94 | #else | |
c8661dc4 | 95 | inline float |
75fbf2f7 | 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 | ||
5a64d8cf | 105 | #if _GLIBCXX_HAVE_MODFL |
c8661dc4 | 106 | inline long double |
75fbf2f7 | 107 | modf(long double __x, long double* __iptr) { return modfl(__x, __iptr); } |
108 | #else | |
c8661dc4 | 109 | inline long double |
110 | modf(long double __x, long double* __iptr) | |
111 | { | |
75fbf2f7 | 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 | } | |
42cd874b | 119 | #endif |