2002-06-21 20:21:03 +00:00
|
|
|
// -*- C++ -*- compatibility header.
|
|
|
|
|
2016-01-04 15:30:50 +01:00
|
|
|
// Copyright (C) 2002-2016 Free Software Foundation, Inc.
|
2002-06-21 20:21:03 +00:00
|
|
|
//
|
|
|
|
// This file is part of the GNU ISO C++ Library. This library is free
|
|
|
|
// software; you can redistribute it and/or modify it under the
|
|
|
|
// terms of the GNU General Public License as published by the
|
2009-04-09 17:00:19 +02:00
|
|
|
// Free Software Foundation; either version 3, or (at your option)
|
2002-06-21 20:21:03 +00:00
|
|
|
// any later version.
|
|
|
|
|
|
|
|
// This library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
// GNU General Public License for more details.
|
|
|
|
|
2009-04-09 17:00:19 +02:00
|
|
|
// Under Section 7 of GPL version 3, you are granted additional
|
|
|
|
// permissions described in the GCC Runtime Library Exception, version
|
|
|
|
// 3.1, as published by the Free Software Foundation.
|
2002-06-21 20:21:03 +00:00
|
|
|
|
2009-04-09 17:00:19 +02:00
|
|
|
// You should have received a copy of the GNU General Public License and
|
|
|
|
// a copy of the GCC Runtime Library Exception along with this program;
|
|
|
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|
|
|
// <http://www.gnu.org/licenses/>.
|
2002-06-21 20:21:03 +00:00
|
|
|
|
2007-03-04 22:59:49 +00:00
|
|
|
/** @file math.h
|
|
|
|
* This is a Standard C++ Library header.
|
|
|
|
*/
|
2002-06-21 20:21:03 +00:00
|
|
|
|
2016-02-01 11:13:40 +00:00
|
|
|
#if !defined __cplusplus || defined _GLIBCXX_INCLUDE_NEXT_C_HEADERS
|
|
|
|
# include_next <math.h>
|
|
|
|
#else
|
2002-06-21 20:21:03 +00:00
|
|
|
|
2007-03-04 22:59:49 +00:00
|
|
|
#ifndef _GLIBCXX_MATH_H
|
|
|
|
#define _GLIBCXX_MATH_H 1
|
|
|
|
|
2016-01-19 21:43:55 +00:00
|
|
|
# include <cmath>
|
|
|
|
|
2002-06-21 20:21:03 +00:00
|
|
|
using std::abs;
|
|
|
|
using std::acos;
|
|
|
|
using std::asin;
|
|
|
|
using std::atan;
|
|
|
|
using std::atan2;
|
|
|
|
using std::cos;
|
|
|
|
using std::sin;
|
|
|
|
using std::tan;
|
|
|
|
using std::cosh;
|
|
|
|
using std::sinh;
|
|
|
|
using std::tanh;
|
|
|
|
using std::exp;
|
|
|
|
using std::frexp;
|
|
|
|
using std::ldexp;
|
|
|
|
using std::log;
|
|
|
|
using std::log10;
|
|
|
|
using std::modf;
|
|
|
|
using std::pow;
|
|
|
|
using std::sqrt;
|
|
|
|
using std::ceil;
|
|
|
|
using std::fabs;
|
|
|
|
using std::floor;
|
|
|
|
using std::fmod;
|
|
|
|
|
More fine-grained autoconf checks for C99 library
2015-11-13 Jennifer Yao <jenny.hyphen.fa@gmail.com>
Jonathan Wakely <jwakely@redhat.com>
PR libstdc++/58393
PR libstdc++/61580
* acinclude.m4 (GLIBCXX_ENABLE_C99): Perform tests twice, with
-std=c++11 as well as -std=c++98, and define separate macros for each.
Cache the results of checking for complex math and wide character
functions. Reformat for readability.
* config.h.in: Regenerate.
* include/bits/c++config: Define _GLIBCXX_USE_C99_XXX macros to
either _GLIBCXX98_USE_C99_XXX or _GLIBCXX11_USE_C99_XXX according to
language standard in use.
* config/locale/dragonfly/c_locale.h (std::__convert_from_v): Replace
_GLIBCXX_USE_C99 with _GLIBCXX_USE_C99_STDIO.
* config/locale/generic/c_locale.h (std::__convert_from_v): Likewise.
* config/locale/gnu/c_locale.h (std::__convert_from_v): Likewise.
* config/os/bsd/dragonfly/os_defines.h: Define _GLIBCXX_USE_C99_STDIO,
_GLIBCXX_USE_C99_STDLIB, and _GLIBCXX_USE_C99_WCHAR.
* configure: Regenerate.
* include/bits/basic_string.h: Make numeric conversion functions
depend on _GLIBCXX_USE_C99_STDIO, _GLIBCXX_USE_C99_STDLIB, or
_GLIBCXX_USE_C99_WCHAR, instead of _GLIBCXX_USE_C99.
* include/ext/vstring.h: Likewise.
* include/bits/locale_facets.tcc (std::num_put::_M_insert_float):
Replace _GLIBCXX_USE_C99 with _GLIBCXX_USE_C99_STDIO.
* include/bits/locale_facets_nonio.tcc (std::money_put::do_put):
Likewise.
* include/c_compatibility/math.h: Replace _GLIBCXX_USE_C99 with
_GLIBCXX_USE_C99_MATH.
* include/c_compatibility/wchar.h: Replace _GLIBCXX_USE_C99 with
_GLIBCXX_USE_C99_WCHAR.
* include/c_global/cstdio: Replace _GLIBCXX_USE_C99 with
_GLIBCXX_USE_C99_STDIO.
* include/c_global/cstdlib: Replace _GLIBCXX_USE_C99 with
_GLIBCXX_USE_C99_STDLIB.
* include/c_global/cwchar: Replace _GLIBCXX_USE_C99 with
_GLIBCXX_USE_C99_WCHAR.
* include/c_std/cstdio: Replace _GLIBCXX_USE_C99 with
_GLIBCXX_USE_C99_STDIO.
* include/c_std/cstdlib: Replace _GLIBCXX_USE_C99 with
_GLIBCXX_USE_C99_STDLIB.
* include/c_std/cwchar: Replace _GLIBCXX_USE_C99 with
_GLIBCXX_USE_C99_WCHAR.
* include/tr1/cstdio: Replace _GLIBCXX_USE_C99 with
_GLIBCXX_USE_C99_STDIO.
* include/tr1/cstdlib: Replace _GLIBCXX_USE_C99 with
_GLIBCXX_USE_C99_STDLIB.
* include/tr1/cwchar: Replace _GLIBCXX_USE_C99 with
_GLIBCXX_USE_C99_WCHAR.
* include/tr1/stdlib.h: Replace _GLIBCXX_USE_C99 with
_GLIBCXX_USE_C99_STDLIB.
* src/c++98/locale_facets.cc (std::__num_base::_S_format_float):
Replace _GLIBCXX_USE_C99 with _GLIBCXX_USE_C99_STDIO.
* testsuite/18_support/exception_ptr/60612-terminate.cc: Replace
_GLIBCXX_USE_C99 with _GLIBCXX_USE_C99_STDLIB.
* testsuite/18_support/exception_ptr/60612-unexpected.cc: Likewise.
* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc
(test01): Replace _GLIBCXX_USE_C99 with _GLIBCXX_USE_C99_WCHAR.
* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/
stof.cc: Likewise.
* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/
stoi.cc: Likewise.
* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/
stol.cc: Likewise.
* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/
stold.cc: Likewise.
* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/
stoll.cc: Likewise.
* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/
stoul.cc: Likewise.
* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/
stoull.cc: Likewise.
* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/
to_wstring.cc: Likewise.
* testsuite/26_numerics/headers/cstdlib/13943.cc: Replace
_GLIBCXX_USE_C99 with _GLIBCXX_USE_C99_STDLIB.
* testsuite/26_numerics/headers/cstdlib/types_std_c++0x.cc: Likewise.
* testsuite/lib/libstdc++.exp (check_v3_target_string_conversions):
Change preprocessor #if conditional so that it uses
_GLIBCXX_USE_C99_STDIO, _GLIBCXX_USE_C99_STDLIB, and
_GLIBCXX_USE_C99_WCHAR, instead of _GLIBCXX_USE_C99.
* testsuite/tr1/8_c_compatibility/cmath/templates.cc: Replace
_GLIBCXX_USE_C99 with _GLIBCXX_USE_C99_MATH.
* testsuite/tr1/8_c_compatibility/cstdio/functions.cc: Replace
_GLIBCXX_USE_C99 with _GLIBCXX_USE_C99_STDIO.
* testsuite/tr1/8_c_compatibility/cstdlib/functions.cc: Replace
_GLIBCXX_USE_C99 with _GLIBCXX_USE_C99_STDLIB.
* testsuite/tr1/8_c_compatibility/cstdlib/types_std_tr1.cc: Likewise.
* testsuite/tr1/8_c_compatibility/cwchar/functions.cc: Replace
_GLIBCXX_USE_C99 with _GLIBCXX_USE_C99_WCHAR.
* testsuite/util/testsuite_fs.h: Replace _GLIBCXX_USE_C99 with
_GLIBCXX_USE_C99_STDIO.
Co-Authored-By: Jonathan Wakely <jwakely@redhat.com>
From-SVN: r230324
2015-11-13 14:51:25 +00:00
|
|
|
#if _GLIBCXX_USE_C99_MATH
|
2002-06-21 20:21:03 +00:00
|
|
|
using std::fpclassify;
|
|
|
|
using std::isfinite;
|
|
|
|
using std::isinf;
|
|
|
|
using std::isnan;
|
|
|
|
using std::isnormal;
|
|
|
|
using std::signbit;
|
|
|
|
using std::isgreater;
|
|
|
|
using std::isgreaterequal;
|
|
|
|
using std::isless;
|
|
|
|
using std::islessequal;
|
|
|
|
using std::islessgreater;
|
|
|
|
using std::isunordered;
|
|
|
|
#endif
|
|
|
|
|
Add C++11 <cmath> overloads to the global namespace
PR libstdc++/60401
* include/c_compatibility/math.h (acosh, asinh, atanh, acbrt,
copysign, erf, erfc, exp2, expm1, fdim, fma, fmax, fmin, hypot, ilogb,
lgamma, llrint, llround, log1p, log2, logb, lrint, lround, nearbyint,
nextafter, nexttoward, remainder, remquo, rint, round, scalbln, scalbn,
tgamma, trunc) [__cplusplus >= 201103L && _GLIBCXX_USE_C99_MATH_TR1]:
Add using declarations.
* testsuite/26_numerics/headers/cmath/60401.cc: New.
From-SVN: r232627
2016-01-20 17:44:58 +00:00
|
|
|
#if __cplusplus >= 201103L && defined(_GLIBCXX_USE_C99_MATH_TR1)
|
|
|
|
using std::acosh;
|
|
|
|
using std::asinh;
|
|
|
|
using std::atanh;
|
|
|
|
using std::cbrt;
|
|
|
|
using std::copysign;
|
|
|
|
using std::erf;
|
|
|
|
using std::erfc;
|
|
|
|
using std::exp2;
|
|
|
|
using std::expm1;
|
|
|
|
using std::fdim;
|
|
|
|
using std::fma;
|
|
|
|
using std::fmax;
|
|
|
|
using std::fmin;
|
|
|
|
using std::hypot;
|
|
|
|
using std::ilogb;
|
|
|
|
using std::lgamma;
|
|
|
|
using std::llrint;
|
|
|
|
using std::llround;
|
|
|
|
using std::log1p;
|
|
|
|
using std::log2;
|
|
|
|
using std::logb;
|
|
|
|
using std::lrint;
|
|
|
|
using std::lround;
|
|
|
|
using std::nearbyint;
|
|
|
|
using std::nextafter;
|
|
|
|
using std::nexttoward;
|
|
|
|
using std::remainder;
|
|
|
|
using std::remquo;
|
|
|
|
using std::rint;
|
|
|
|
using std::round;
|
|
|
|
using std::scalbln;
|
|
|
|
using std::scalbn;
|
|
|
|
using std::tgamma;
|
|
|
|
using std::trunc;
|
|
|
|
#endif // C++11 && _GLIBCXX_USE_C99_MATH_TR1
|
|
|
|
|
2016-01-22 23:17:10 +00:00
|
|
|
#if __STDCPP_WANT_MATH_SPEC_FUNCS__ == 1
|
|
|
|
using std::assoc_laguerref;
|
|
|
|
using std::assoc_laguerrel;
|
|
|
|
using std::assoc_laguerre;
|
|
|
|
using std::assoc_legendref;
|
|
|
|
using std::assoc_legendrel;
|
|
|
|
using std::assoc_legendre;
|
|
|
|
using std::betaf;
|
|
|
|
using std::betal;
|
|
|
|
using std::beta;
|
|
|
|
using std::comp_ellint_1f;
|
|
|
|
using std::comp_ellint_1l;
|
|
|
|
using std::comp_ellint_1;
|
|
|
|
using std::comp_ellint_2f;
|
|
|
|
using std::comp_ellint_2l;
|
|
|
|
using std::comp_ellint_2;
|
|
|
|
using std::comp_ellint_3f;
|
|
|
|
using std::comp_ellint_3l;
|
|
|
|
using std::comp_ellint_3;
|
|
|
|
using std::cyl_bessel_if;
|
|
|
|
using std::cyl_bessel_il;
|
|
|
|
using std::cyl_bessel_i;
|
|
|
|
using std::cyl_bessel_jf;
|
|
|
|
using std::cyl_bessel_jl;
|
|
|
|
using std::cyl_bessel_j;
|
|
|
|
using std::cyl_bessel_kf;
|
|
|
|
using std::cyl_bessel_kl;
|
|
|
|
using std::cyl_bessel_k;
|
|
|
|
using std::cyl_neumannf;
|
|
|
|
using std::cyl_neumannl;
|
|
|
|
using std::cyl_neumann;
|
|
|
|
using std::ellint_1f;
|
|
|
|
using std::ellint_1l;
|
|
|
|
using std::ellint_1;
|
|
|
|
using std::ellint_2f;
|
|
|
|
using std::ellint_2l;
|
|
|
|
using std::ellint_2;
|
|
|
|
using std::ellint_3f;
|
|
|
|
using std::ellint_3l;
|
|
|
|
using std::ellint_3;
|
|
|
|
using std::expintf;
|
|
|
|
using std::expintl;
|
|
|
|
using std::expint;
|
|
|
|
using std::hermitef;
|
|
|
|
using std::hermitel;
|
|
|
|
using std::hermite;
|
|
|
|
using std::laguerref;
|
|
|
|
using std::laguerrel;
|
|
|
|
using std::laguerre;
|
|
|
|
using std::legendref;
|
|
|
|
using std::legendrel;
|
|
|
|
using std::legendre;
|
|
|
|
using std::riemann_zetaf;
|
|
|
|
using std::riemann_zetal;
|
|
|
|
using std::riemann_zeta;
|
|
|
|
using std::sph_besself;
|
|
|
|
using std::sph_bessell;
|
|
|
|
using std::sph_bessel;
|
|
|
|
using std::sph_legendref;
|
|
|
|
using std::sph_legendrel;
|
|
|
|
using std::sph_legendre;
|
|
|
|
using std::sph_neumannf;
|
|
|
|
using std::sph_neumannl;
|
|
|
|
using std::sph_neumann;
|
|
|
|
#endif // __STDCPP_WANT_MATH_SPEC_FUNCS__
|
|
|
|
|
|
|
|
#endif // _GLIBCXX_MATH_H
|
2016-02-01 11:13:40 +00:00
|
|
|
#endif // __cplusplus
|