xref: /netbsd-src/external/gpl3/gcc/dist/libstdc++-v3/include/c_compatibility/math.h (revision b1e838363e3c6fc78a55519254d99869742dd33c)
14fee23f9Smrg // -*- C++ -*- compatibility header.
24fee23f9Smrg 
3*b1e83836Smrg // Copyright (C) 2002-2022 Free Software Foundation, Inc.
44fee23f9Smrg //
54fee23f9Smrg // This file is part of the GNU ISO C++ Library.  This library is free
64fee23f9Smrg // software; you can redistribute it and/or modify it under the
74fee23f9Smrg // terms of the GNU General Public License as published by the
84fee23f9Smrg // Free Software Foundation; either version 3, or (at your option)
94fee23f9Smrg // any later version.
104fee23f9Smrg 
114fee23f9Smrg // This library is distributed in the hope that it will be useful,
124fee23f9Smrg // but WITHOUT ANY WARRANTY; without even the implied warranty of
134fee23f9Smrg // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
144fee23f9Smrg // GNU General Public License for more details.
154fee23f9Smrg 
164fee23f9Smrg // Under Section 7 of GPL version 3, you are granted additional
174fee23f9Smrg // permissions described in the GCC Runtime Library Exception, version
184fee23f9Smrg // 3.1, as published by the Free Software Foundation.
194fee23f9Smrg 
204fee23f9Smrg // You should have received a copy of the GNU General Public License and
214fee23f9Smrg // a copy of the GCC Runtime Library Exception along with this program;
224fee23f9Smrg // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
234fee23f9Smrg // <http://www.gnu.org/licenses/>.
244fee23f9Smrg 
254fee23f9Smrg /** @file math.h
264fee23f9Smrg  *  This is a Standard C++ Library header.
274fee23f9Smrg  */
284fee23f9Smrg 
29f9a78e0eSmrg #if !defined __cplusplus || defined _GLIBCXX_INCLUDE_NEXT_C_HEADERS
30f9a78e0eSmrg # include_next <math.h>
31f9a78e0eSmrg #else
324fee23f9Smrg 
334fee23f9Smrg #ifndef _GLIBCXX_MATH_H
344fee23f9Smrg #define _GLIBCXX_MATH_H 1
354fee23f9Smrg 
36f9a78e0eSmrg # include <cmath>
37f9a78e0eSmrg 
384fee23f9Smrg using std::abs;
394fee23f9Smrg using std::acos;
404fee23f9Smrg using std::asin;
414fee23f9Smrg using std::atan;
424fee23f9Smrg using std::atan2;
434fee23f9Smrg using std::cos;
444fee23f9Smrg using std::sin;
454fee23f9Smrg using std::tan;
464fee23f9Smrg using std::cosh;
474fee23f9Smrg using std::sinh;
484fee23f9Smrg using std::tanh;
494fee23f9Smrg using std::exp;
504fee23f9Smrg using std::frexp;
514fee23f9Smrg using std::ldexp;
524fee23f9Smrg using std::log;
534fee23f9Smrg using std::log10;
544fee23f9Smrg using std::modf;
554fee23f9Smrg using std::pow;
564fee23f9Smrg using std::sqrt;
574fee23f9Smrg using std::ceil;
584fee23f9Smrg using std::fabs;
594fee23f9Smrg using std::floor;
604fee23f9Smrg using std::fmod;
614fee23f9Smrg 
62f9a78e0eSmrg #if _GLIBCXX_USE_C99_MATH
634fee23f9Smrg using std::fpclassify;
644fee23f9Smrg using std::isfinite;
654fee23f9Smrg using std::isinf;
664fee23f9Smrg using std::isnan;
674fee23f9Smrg using std::isnormal;
684fee23f9Smrg using std::signbit;
694fee23f9Smrg using std::isgreater;
704fee23f9Smrg using std::isgreaterequal;
714fee23f9Smrg using std::isless;
724fee23f9Smrg using std::islessequal;
734fee23f9Smrg using std::islessgreater;
744fee23f9Smrg using std::isunordered;
754fee23f9Smrg #endif
764fee23f9Smrg 
77f9a78e0eSmrg #if __cplusplus >= 201103L && defined(_GLIBCXX_USE_C99_MATH_TR1)
78f9a78e0eSmrg using std::acosh;
79f9a78e0eSmrg using std::asinh;
80f9a78e0eSmrg using std::atanh;
81f9a78e0eSmrg using std::cbrt;
82f9a78e0eSmrg using std::copysign;
83f9a78e0eSmrg using std::erf;
84f9a78e0eSmrg using std::erfc;
85f9a78e0eSmrg using std::exp2;
86f9a78e0eSmrg using std::expm1;
87f9a78e0eSmrg using std::fdim;
88f9a78e0eSmrg using std::fma;
89f9a78e0eSmrg using std::fmax;
90f9a78e0eSmrg using std::fmin;
91f9a78e0eSmrg using std::hypot;
92f9a78e0eSmrg using std::ilogb;
93f9a78e0eSmrg using std::lgamma;
94f9a78e0eSmrg using std::llrint;
95f9a78e0eSmrg using std::llround;
96f9a78e0eSmrg using std::log1p;
97f9a78e0eSmrg using std::log2;
98f9a78e0eSmrg using std::logb;
99f9a78e0eSmrg using std::lrint;
100f9a78e0eSmrg using std::lround;
101f9a78e0eSmrg using std::nearbyint;
102f9a78e0eSmrg using std::nextafter;
103f9a78e0eSmrg using std::nexttoward;
104f9a78e0eSmrg using std::remainder;
105f9a78e0eSmrg using std::remquo;
106f9a78e0eSmrg using std::rint;
107f9a78e0eSmrg using std::round;
108f9a78e0eSmrg using std::scalbln;
109f9a78e0eSmrg using std::scalbn;
110f9a78e0eSmrg using std::tgamma;
111f9a78e0eSmrg using std::trunc;
112f9a78e0eSmrg #endif // C++11 && _GLIBCXX_USE_C99_MATH_TR1
1134fee23f9Smrg 
114181254a7Smrg // The mathematical special functions are only added to the global namespace
115181254a7Smrg // by IS 29124, but not by C++17.
116181254a7Smrg #if __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0
117f9a78e0eSmrg using std::assoc_laguerref;
118f9a78e0eSmrg using std::assoc_laguerrel;
119f9a78e0eSmrg using std::assoc_laguerre;
120f9a78e0eSmrg using std::assoc_legendref;
121f9a78e0eSmrg using std::assoc_legendrel;
122f9a78e0eSmrg using std::assoc_legendre;
123f9a78e0eSmrg using std::betaf;
124f9a78e0eSmrg using std::betal;
125f9a78e0eSmrg using std::beta;
126f9a78e0eSmrg using std::comp_ellint_1f;
127f9a78e0eSmrg using std::comp_ellint_1l;
128f9a78e0eSmrg using std::comp_ellint_1;
129f9a78e0eSmrg using std::comp_ellint_2f;
130f9a78e0eSmrg using std::comp_ellint_2l;
131f9a78e0eSmrg using std::comp_ellint_2;
132f9a78e0eSmrg using std::comp_ellint_3f;
133f9a78e0eSmrg using std::comp_ellint_3l;
134f9a78e0eSmrg using std::comp_ellint_3;
135f9a78e0eSmrg using std::cyl_bessel_if;
136f9a78e0eSmrg using std::cyl_bessel_il;
137f9a78e0eSmrg using std::cyl_bessel_i;
138f9a78e0eSmrg using std::cyl_bessel_jf;
139f9a78e0eSmrg using std::cyl_bessel_jl;
140f9a78e0eSmrg using std::cyl_bessel_j;
141f9a78e0eSmrg using std::cyl_bessel_kf;
142f9a78e0eSmrg using std::cyl_bessel_kl;
143f9a78e0eSmrg using std::cyl_bessel_k;
144f9a78e0eSmrg using std::cyl_neumannf;
145f9a78e0eSmrg using std::cyl_neumannl;
146f9a78e0eSmrg using std::cyl_neumann;
147f9a78e0eSmrg using std::ellint_1f;
148f9a78e0eSmrg using std::ellint_1l;
149f9a78e0eSmrg using std::ellint_1;
150f9a78e0eSmrg using std::ellint_2f;
151f9a78e0eSmrg using std::ellint_2l;
152f9a78e0eSmrg using std::ellint_2;
153f9a78e0eSmrg using std::ellint_3f;
154f9a78e0eSmrg using std::ellint_3l;
155f9a78e0eSmrg using std::ellint_3;
156f9a78e0eSmrg using std::expintf;
157f9a78e0eSmrg using std::expintl;
158f9a78e0eSmrg using std::expint;
159f9a78e0eSmrg using std::hermitef;
160f9a78e0eSmrg using std::hermitel;
161f9a78e0eSmrg using std::hermite;
162f9a78e0eSmrg using std::laguerref;
163f9a78e0eSmrg using std::laguerrel;
164f9a78e0eSmrg using std::laguerre;
165f9a78e0eSmrg using std::legendref;
166f9a78e0eSmrg using std::legendrel;
167f9a78e0eSmrg using std::legendre;
168f9a78e0eSmrg using std::riemann_zetaf;
169f9a78e0eSmrg using std::riemann_zetal;
170f9a78e0eSmrg using std::riemann_zeta;
171f9a78e0eSmrg using std::sph_besself;
172f9a78e0eSmrg using std::sph_bessell;
173f9a78e0eSmrg using std::sph_bessel;
174f9a78e0eSmrg using std::sph_legendref;
175f9a78e0eSmrg using std::sph_legendrel;
176f9a78e0eSmrg using std::sph_legendre;
177f9a78e0eSmrg using std::sph_neumannf;
178f9a78e0eSmrg using std::sph_neumannl;
179f9a78e0eSmrg using std::sph_neumann;
180a3e9eb18Smrg #endif // _GLIBCXX_USE_STD_SPEC_FUNCS
181f9a78e0eSmrg 
182181254a7Smrg #if __cplusplus > 201703L
183181254a7Smrg using std::lerp;
184181254a7Smrg #endif // C++20
185181254a7Smrg 
186f9a78e0eSmrg #endif // _GLIBCXX_MATH_H
187f9a78e0eSmrg #endif // __cplusplus
188