1// -*- C++ -*- compatibility header.
2
3// Copyright (C) 2002-2021 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.
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
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.
19
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/>.
24
25/** @file math.h
26 * This is a Standard C++ Library header.
27 */
28
29#if !defined __cplusplus || defined _GLIBCXX_INCLUDE_NEXT_C_HEADERS
30# include_next <math.h>
31#else
32
33#ifndef _GLIBCXX_MATH_H
34#define _GLIBCXX_MATH_H 1
35
36# include <cmath>
37
38using std::abs;
39using std::acos;
40using std::asin;
41using std::atan;
42using std::atan2;
43using std::cos;
44using std::sin;
45using std::tan;
46using std::cosh;
47using std::sinh;
48using std::tanh;
49using std::exp;
50using std::frexp;
51using std::ldexp;
52using std::log;
53using std::log10;
54using std::modf;
55using std::pow;
56using std::sqrt;
57using std::ceil;
58using std::fabs;
59using std::floor;
60using std::fmod;
61
62#if _GLIBCXX_USE_C99_MATH
63using std::fpclassify;
64using std::isfinite;
65using std::isinf;
66using std::isnan;
67using std::isnormal;
68using std::signbit;
69using std::isgreater;
70using std::isgreaterequal;
71using std::isless;
72using std::islessequal;
73using std::islessgreater;
74using std::isunordered;
75#endif
76
77#if __cplusplus >= 201103L && defined(_GLIBCXX_USE_C99_MATH_TR1)
78using std::acosh;
79using std::asinh;
80using std::atanh;
81using std::cbrt;
82using std::copysign;
83using std::erf;
84using std::erfc;
85using std::exp2;
86using std::expm1;
87using std::fdim;
88using std::fma;
89using std::fmax;
90using std::fmin;
91using std::hypot;
92using std::ilogb;
93using std::lgamma;
94using std::llrint;
95using std::llround;
96using std::log1p;
97using std::log2;
98using std::logb;
99using std::lrint;
100using std::lround;
101using std::nearbyint;
102using std::nextafter;
103using std::nexttoward;
104using std::remainder;
105using std::remquo;
106using std::rint;
107using std::round;
108using std::scalbln;
109using std::scalbn;
110using std::tgamma;
111using std::trunc;
112#endif // C++11 && _GLIBCXX_USE_C99_MATH_TR1
113
114// The mathematical special functions are only added to the global namespace
115// by IS 29124, but not by C++17.
116#if __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0
117using std::assoc_laguerref;
118using std::assoc_laguerrel;
119using std::assoc_laguerre;
120using std::assoc_legendref;
121using std::assoc_legendrel;
122using std::assoc_legendre;
123using std::betaf;
124using std::betal;
125using std::beta;
126using std::comp_ellint_1f;
127using std::comp_ellint_1l;
128using std::comp_ellint_1;
129using std::comp_ellint_2f;
130using std::comp_ellint_2l;
131using std::comp_ellint_2;
132using std::comp_ellint_3f;
133using std::comp_ellint_3l;
134using std::comp_ellint_3;
135using std::cyl_bessel_if;
136using std::cyl_bessel_il;
137using std::cyl_bessel_i;
138using std::cyl_bessel_jf;
139using std::cyl_bessel_jl;
140using std::cyl_bessel_j;
141using std::cyl_bessel_kf;
142using std::cyl_bessel_kl;
143using std::cyl_bessel_k;
144using std::cyl_neumannf;
145using std::cyl_neumannl;
146using std::cyl_neumann;
147using std::ellint_1f;
148using std::ellint_1l;
149using std::ellint_1;
150using std::ellint_2f;
151using std::ellint_2l;
152using std::ellint_2;
153using std::ellint_3f;
154using std::ellint_3l;
155using std::ellint_3;
156using std::expintf;
157using std::expintl;
158using std::expint;
159using std::hermitef;
160using std::hermitel;
161using std::hermite;
162using std::laguerref;
163using std::laguerrel;
164using std::laguerre;
165using std::legendref;
166using std::legendrel;
167using std::legendre;
168using std::riemann_zetaf;
169using std::riemann_zetal;
170using std::riemann_zeta;
171using std::sph_besself;
172using std::sph_bessell;
173using std::sph_bessel;
174using std::sph_legendref;
175using std::sph_legendrel;
176using std::sph_legendre;
177using std::sph_neumannf;
178using std::sph_neumannl;
179using std::sph_neumann;
180#endif // _GLIBCXX_USE_STD_SPEC_FUNCS
181
182#if __cplusplus > 201703L
183using std::lerp;
184#endif // C++20
185
186#endif // _GLIBCXX_MATH_H
187#endif // __cplusplus
188