Fortran: Fix translatability of diagnostic strings
[official-gcc.git] / libstdc++-v3 / include / c / cmath
blob43ff06aba7564a11103f79318a5b214bbb5ff51f
1 // -*- C++ -*- forwarding header.
3 // Copyright (C) 2000-2024 Free Software Foundation, Inc.
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
8 // Free Software Foundation; either version 3, or (at your option)
9 // any later version.
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.
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.
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/>.
26 // ISO C++ 14882: 26.5  C library
29 #ifndef _GLIBCXX_CMATH
30 #define _GLIBCXX_CMATH 1
32 #ifdef _GLIBCXX_SYSHDR
33 #pragma GCC system_header
34 #endif
36 #include <bits/c++config.h>
38 #pragma GCC diagnostic push
39 #pragma GCC diagnostic ignored "-Wpedantic" // include_next
41 #include_next <math.h>
43 #pragma GCC diagnostic pop
45 // Get rid of those macros defined in <math.h> in lieu of real functions.
46 #undef abs
47 #undef div
48 #undef acos
49 #undef asin
50 #undef atan
51 #undef atan2
52 #undef ceil
53 #undef cos
54 #undef cosh
55 #undef exp
56 #undef fabs
57 #undef floor
58 #undef fmod
59 #undef frexp
60 #undef ldexp
61 #undef log
62 #undef log10
63 #undef modf
64 #undef pow
65 #undef sin
66 #undef sinh
67 #undef sqrt
68 #undef tan
69 #undef tanh
71 #undef fpclassify
72 #undef isfinite
73 #undef isinf
74 #undef isnan
75 #undef isnormal
76 #undef signbit
77 #undef isgreater
78 #undef isgreaterequal
79 #undef isless
80 #undef islessequal
81 #undef islessgreater
82 #undef isunordered
84 namespace std _GLIBCXX_VISIBILITY(default)
86   inline double
87   abs(double __x)
88   { return __builtin_fabs(__x); }
90   inline float
91   abs(float __x)
92   { return __builtin_fabsf(__x); }
94   inline long double
95   abs(long double __x)
96   { return __builtin_fabsl(__x); }
98 #if _GLIBCXX_HAVE_MODFF
99   inline float
100   modf(float __x, float* __iptr) { return modff(__x, __iptr); }
101 #else
102   inline float
103   modf(float __x, float* __iptr)
104   {
105     double __tmp;
106     double __res = modf(static_cast<double>(__x), &__tmp);
107     *__iptr = static_cast<float>(__tmp);
108     return __res;
109   }
110 #endif
112 #if _GLIBCXX_HAVE_MODFL
113   inline long double
114   modf(long double __x, long double* __iptr) { return modfl(__x, __iptr); }
115 #else
116   inline long double
117   modf(long double __x, long double* __iptr)
118   {
119     double __tmp;
120     double __res = modf(static_cast<double>(__x), &__tmp);
121     * __iptr = static_cast<long double>(__tmp);
122     return __res;
123   }
124 #endif
126 #endif