-
Notifications
You must be signed in to change notification settings - Fork 745
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
external libraries: import boost.math.special_functions
Signed-off-by: Tim Blechmann <tim@klingt.org>
- Loading branch information
1 parent
631a363
commit e0387c5
Showing
191 changed files
with
49,599 additions
and
1 deletion.
There are no files selected for viewing
657 changes: 657 additions & 0 deletions
657
external_libraries/boost/boost/math/policies/error_handling.hpp
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
// Copyright John Maddock 2006, 2007. | ||
// Copyright Paul A. Bristow 2006, 2007. | ||
|
||
// Use, modification and distribution are subject to the | ||
// Boost Software License, Version 1.0. (See accompanying file | ||
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | ||
|
||
// This file includes *all* the special functions. | ||
// this may be useful if many are used | ||
// - to avoid including each function individually. | ||
|
||
#ifndef BOOST_MATH_SPECIAL_FUNCTIONS_HPP | ||
#define BOOST_MATH_SPECIAL_FUNCTIONS_HPP | ||
|
||
#include <boost/math/special_functions/acosh.hpp> | ||
#include <boost/math/special_functions/asinh.hpp> | ||
#include <boost/math/special_functions/atanh.hpp> | ||
#include <boost/math/special_functions/bessel.hpp> | ||
#include <boost/math/special_functions/beta.hpp> | ||
#include <boost/math/special_functions/binomial.hpp> | ||
#include <boost/math/special_functions/cbrt.hpp> | ||
#include <boost/math/special_functions/cos_pi.hpp> | ||
#include <boost/math/special_functions/digamma.hpp> | ||
#include <boost/math/special_functions/ellint_1.hpp> | ||
#include <boost/math/special_functions/ellint_2.hpp> | ||
#include <boost/math/special_functions/ellint_3.hpp> | ||
#include <boost/math/special_functions/ellint_rc.hpp> | ||
#include <boost/math/special_functions/ellint_rd.hpp> | ||
#include <boost/math/special_functions/ellint_rf.hpp> | ||
#include <boost/math/special_functions/ellint_rj.hpp> | ||
#include <boost/math/special_functions/erf.hpp> | ||
#include <boost/math/special_functions/expint.hpp> | ||
#include <boost/math/special_functions/expm1.hpp> | ||
#include <boost/math/special_functions/factorials.hpp> | ||
#include <boost/math/special_functions/fpclassify.hpp> | ||
#include <boost/math/special_functions/gamma.hpp> | ||
#include <boost/math/special_functions/hermite.hpp> | ||
#include <boost/math/special_functions/hypot.hpp> | ||
#include <boost/math/special_functions/laguerre.hpp> | ||
#include <boost/math/special_functions/lanczos.hpp> | ||
#include <boost/math/special_functions/legendre.hpp> | ||
#include <boost/math/special_functions/log1p.hpp> | ||
#include <boost/math/special_functions/math_fwd.hpp> | ||
#include <boost/math/special_functions/next.hpp> | ||
#include <boost/math/special_functions/powm1.hpp> | ||
#include <boost/math/special_functions/sign.hpp> | ||
#include <boost/math/special_functions/sin_pi.hpp> | ||
#include <boost/math/special_functions/sinc.hpp> | ||
#include <boost/math/special_functions/sinhc.hpp> | ||
#include <boost/math/special_functions/spherical_harmonic.hpp> | ||
#include <boost/math/special_functions/sqrt1pm1.hpp> | ||
#include <boost/math/special_functions/zeta.hpp> | ||
#include <boost/math/special_functions/modf.hpp> | ||
#include <boost/math/special_functions/round.hpp> | ||
#include <boost/math/special_functions/trunc.hpp> | ||
#include <boost/math/special_functions/pow.hpp> | ||
#include <boost/math/special_functions/next.hpp> | ||
|
||
#endif // BOOST_MATH_SPECIAL_FUNCTIONS_HPP |
114 changes: 114 additions & 0 deletions
114
external_libraries/boost/boost/math/special_functions/acosh.hpp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,114 @@ | ||
// boost asinh.hpp header file | ||
|
||
// (C) Copyright Eric Ford 2001 & Hubert Holin. | ||
// (C) Copyright John Maddock 2008. | ||
// Distributed under the Boost Software License, Version 1.0. (See | ||
// accompanying file LICENSE_1_0.txt or copy at | ||
// http://www.boost.org/LICENSE_1_0.txt) | ||
|
||
// See http://www.boost.org for updates, documentation, and revision history. | ||
|
||
#ifndef BOOST_ACOSH_HPP | ||
#define BOOST_ACOSH_HPP | ||
|
||
#ifdef _MSC_VER | ||
#pragma once | ||
#endif | ||
|
||
#include <boost/config/no_tr1/cmath.hpp> | ||
#include <boost/config.hpp> | ||
#include <boost/math/tools/precision.hpp> | ||
#include <boost/math/policies/error_handling.hpp> | ||
#include <boost/math/special_functions/math_fwd.hpp> | ||
#include <boost/math/special_functions/log1p.hpp> | ||
|
||
// This is the inverse of the hyperbolic cosine function. | ||
|
||
namespace boost | ||
{ | ||
namespace math | ||
{ | ||
namespace detail | ||
{ | ||
#if defined(__GNUC__) && (__GNUC__ < 3) | ||
// gcc 2.x ignores function scope using declarations, | ||
// put them in the scope of the enclosing namespace instead: | ||
|
||
using ::std::abs; | ||
using ::std::sqrt; | ||
using ::std::log; | ||
|
||
using ::std::numeric_limits; | ||
#endif | ||
|
||
template<typename T, typename Policy> | ||
inline T acosh_imp(const T x, const Policy& pol) | ||
{ | ||
BOOST_MATH_STD_USING | ||
|
||
if(x < 1) | ||
{ | ||
return policies::raise_domain_error<T>( | ||
"boost::math::acosh<%1%>(%1%)", | ||
"acosh requires x >= 1, but got x = %1%.", x, pol); | ||
} | ||
else if ((x - 1) >= tools::root_epsilon<T>()) | ||
{ | ||
if (x > 1 / tools::root_epsilon<T>()) | ||
{ | ||
// http://functions.wolfram.com/ElementaryFunctions/ArcCosh/06/01/06/01/0001/ | ||
// approximation by laurent series in 1/x at 0+ order from -1 to 0 | ||
return( log( x * 2) ); | ||
} | ||
else if(x < 1.5f) | ||
{ | ||
// This is just a rearrangement of the standard form below | ||
// devised to minimse loss of precision when x ~ 1: | ||
T y = x - 1; | ||
return boost::math::log1p(y + sqrt(y * y + 2 * y), pol); | ||
} | ||
else | ||
{ | ||
// http://functions.wolfram.com/ElementaryFunctions/ArcCosh/02/ | ||
return( log( x + sqrt(x * x - 1) ) ); | ||
} | ||
} | ||
else | ||
{ | ||
// see http://functions.wolfram.com/ElementaryFunctions/ArcCosh/06/01/04/01/0001/ | ||
T y = x - 1; | ||
|
||
// approximation by taylor series in y at 0 up to order 2 | ||
T result = sqrt(2 * y) * (1 - y /12 + 3 * y * y / 160); | ||
return result; | ||
} | ||
} | ||
} | ||
|
||
template<typename T, typename Policy> | ||
inline typename tools::promote_args<T>::type acosh(T x, const Policy&) | ||
{ | ||
typedef typename tools::promote_args<T>::type result_type; | ||
typedef typename policies::evaluation<result_type, Policy>::type value_type; | ||
typedef typename policies::normalise< | ||
Policy, | ||
policies::promote_float<false>, | ||
policies::promote_double<false>, | ||
policies::discrete_quantile<>, | ||
policies::assert_undefined<> >::type forwarding_policy; | ||
return policies::checked_narrowing_cast<result_type, forwarding_policy>( | ||
detail::acosh_imp(static_cast<value_type>(x), forwarding_policy()), | ||
"boost::math::acosh<%1%>(%1%)"); | ||
} | ||
template<typename T> | ||
inline typename tools::promote_args<T>::type acosh(T x) | ||
{ | ||
return boost::math::acosh(x, policies::policy<>()); | ||
} | ||
|
||
} | ||
} | ||
|
||
#endif /* BOOST_ACOSH_HPP */ | ||
|
||
|
116 changes: 116 additions & 0 deletions
116
external_libraries/boost/boost/math/special_functions/asinh.hpp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,116 @@ | ||
// boost asinh.hpp header file | ||
|
||
// (C) Copyright Eric Ford & Hubert Holin 2001. | ||
// (C) Copyright John Maddock 2008. | ||
// Distributed under the Boost Software License, Version 1.0. (See | ||
// accompanying file LICENSE_1_0.txt or copy at | ||
// http://www.boost.org/LICENSE_1_0.txt) | ||
|
||
// See http://www.boost.org for updates, documentation, and revision history. | ||
|
||
#ifndef BOOST_ASINH_HPP | ||
#define BOOST_ASINH_HPP | ||
|
||
#ifdef _MSC_VER | ||
#pragma once | ||
#endif | ||
|
||
|
||
#include <boost/config/no_tr1/cmath.hpp> | ||
#include <boost/config.hpp> | ||
#include <boost/math/tools/precision.hpp> | ||
#include <boost/math/special_functions/math_fwd.hpp> | ||
#include <boost/math/special_functions/sqrt1pm1.hpp> | ||
#include <boost/math/special_functions/log1p.hpp> | ||
|
||
// This is the inverse of the hyperbolic sine function. | ||
|
||
namespace boost | ||
{ | ||
namespace math | ||
{ | ||
namespace detail{ | ||
#if defined(__GNUC__) && (__GNUC__ < 3) | ||
// gcc 2.x ignores function scope using declarations, | ||
// put them in the scope of the enclosing namespace instead: | ||
|
||
using ::std::abs; | ||
using ::std::sqrt; | ||
using ::std::log; | ||
|
||
using ::std::numeric_limits; | ||
#endif | ||
|
||
template<typename T, class Policy> | ||
inline T asinh_imp(const T x, const Policy& pol) | ||
{ | ||
BOOST_MATH_STD_USING | ||
|
||
if (x >= tools::forth_root_epsilon<T>()) | ||
{ | ||
if (x > 1 / tools::root_epsilon<T>()) | ||
{ | ||
// http://functions.wolfram.com/ElementaryFunctions/ArcSinh/06/01/06/01/0001/ | ||
// approximation by laurent series in 1/x at 0+ order from -1 to 1 | ||
return log(x * 2) + 1/ (4 * x * x); | ||
} | ||
else if(x < 0.5f) | ||
{ | ||
// As below, but rearranged to preserve digits: | ||
return boost::math::log1p(x + boost::math::sqrt1pm1(x * x, pol), pol); | ||
} | ||
else | ||
{ | ||
// http://functions.wolfram.com/ElementaryFunctions/ArcSinh/02/ | ||
return( log( x + sqrt(x*x+1) ) ); | ||
} | ||
} | ||
else if (x <= -tools::forth_root_epsilon<T>()) | ||
{ | ||
return(-asinh(-x)); | ||
} | ||
else | ||
{ | ||
// http://functions.wolfram.com/ElementaryFunctions/ArcSinh/06/01/03/01/0001/ | ||
// approximation by taylor series in x at 0 up to order 2 | ||
T result = x; | ||
|
||
if (abs(x) >= tools::root_epsilon<T>()) | ||
{ | ||
T x3 = x*x*x; | ||
|
||
// approximation by taylor series in x at 0 up to order 4 | ||
result -= x3/static_cast<T>(6); | ||
} | ||
|
||
return(result); | ||
} | ||
} | ||
} | ||
|
||
template<typename T> | ||
inline typename tools::promote_args<T>::type asinh(T x) | ||
{ | ||
return boost::math::asinh(x, policies::policy<>()); | ||
} | ||
template<typename T, typename Policy> | ||
inline typename tools::promote_args<T>::type asinh(T x, const Policy&) | ||
{ | ||
typedef typename tools::promote_args<T>::type result_type; | ||
typedef typename policies::evaluation<result_type, Policy>::type value_type; | ||
typedef typename policies::normalise< | ||
Policy, | ||
policies::promote_float<false>, | ||
policies::promote_double<false>, | ||
policies::discrete_quantile<>, | ||
policies::assert_undefined<> >::type forwarding_policy; | ||
return policies::checked_narrowing_cast<result_type, forwarding_policy>( | ||
detail::asinh_imp(static_cast<value_type>(x), forwarding_policy()), | ||
"boost::math::asinh<%1%>(%1%)"); | ||
} | ||
|
||
} | ||
} | ||
|
||
#endif /* BOOST_ASINH_HPP */ | ||
|
Oops, something went wrong.