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