blob: cf1951334ed8335383872373120fb5ab04c2ea76 [file] [log] [blame]
// Copyright John Maddock 2008.
// 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)
//
#include <boost/math/policies/policy.hpp>
#include <boost/math/special_functions/math_fwd.hpp>
namespace boost{ namespace math{ namespace policies{
template <>
struct policy<
domain_error<errno_on_error>,
pole_error<errno_on_error>,
overflow_error<errno_on_error>,
evaluation_error<errno_on_error>,
rounding_error<errno_on_error>,
default_policy, default_policy, default_policy, default_policy, default_policy, default_policy>
{
public:
typedef domain_error<errno_on_error> domain_error_type;
typedef pole_error<errno_on_error> pole_error_type;
typedef overflow_error<errno_on_error> overflow_error_type;
typedef underflow_error<errno_on_error> underflow_error_type;
typedef denorm_error<errno_on_error> denorm_error_type;
typedef evaluation_error<errno_on_error> evaluation_error_type;
typedef rounding_error<errno_on_error> rounding_error_type;
typedef indeterminate_result_error<> indeterminate_result_error_type;
#if BOOST_MATH_DIGITS10_POLICY == 0
typedef digits2<> precision_type;
#else
typedef detail::precision<digits10<>, digits2<> >::type precision_type;
#endif
typedef promote_float<> promote_float_type;
typedef promote_double<> promote_double_type;
typedef discrete_quantile<> discrete_quantile_type;
typedef assert_undefined<> assert_undefined_type;
typedef max_series_iterations<> max_series_iterations_type;
typedef max_root_iterations<> max_root_iterations_type;
};
template <>
struct policy<
domain_error<errno_on_error>,
pole_error<errno_on_error>,
overflow_error<errno_on_error>,
evaluation_error<errno_on_error>,
rounding_error<errno_on_error>,
detail::forwarding_arg1,
detail::forwarding_arg2,
default_policy, default_policy, default_policy, default_policy, default_policy, default_policy>
{
public:
typedef domain_error<errno_on_error> domain_error_type;
typedef pole_error<errno_on_error> pole_error_type;
typedef overflow_error<errno_on_error> overflow_error_type;
typedef underflow_error<errno_on_error> underflow_error_type;
typedef denorm_error<errno_on_error> denorm_error_type;
typedef evaluation_error<errno_on_error> evaluation_error_type;
typedef rounding_error<errno_on_error> rounding_error_type;
typedef indeterminate_result_error<> indeterminate_result_error_type;
#if BOOST_MATH_DIGITS10_POLICY == 0
typedef digits2<> precision_type;
#else
typedef detail::precision<digits10<>, digits2<> >::type precision_type;
#endif
typedef promote_float<false> promote_float_type;
typedef promote_double<false> promote_double_type;
typedef discrete_quantile<> discrete_quantile_type;
typedef assert_undefined<> assert_undefined_type;
typedef max_series_iterations<> max_series_iterations_type;
typedef max_root_iterations<> max_root_iterations_type;
};
template <>
struct normalise<policy<domain_error<errno_on_error>, pole_error<errno_on_error>, overflow_error<errno_on_error>, evaluation_error<errno_on_error>, rounding_error<errno_on_error> >,
promote_float<false>,
promote_double<false>,
discrete_quantile<>,
assert_undefined<>,
default_policy,
default_policy,
default_policy,
default_policy,
default_policy,
default_policy,
default_policy>
{
typedef policy<domain_error<errno_on_error>, pole_error<errno_on_error>, overflow_error<errno_on_error>, evaluation_error<errno_on_error>, rounding_error<errno_on_error>, detail::forwarding_arg1, detail::forwarding_arg2> type;
};
template <>
struct normalise<policy<domain_error<errno_on_error>, pole_error<errno_on_error>, overflow_error<errno_on_error>, evaluation_error<errno_on_error>, rounding_error<errno_on_error>, detail::forwarding_arg1, detail::forwarding_arg2 >,
promote_float<false>,
promote_double<false>,
discrete_quantile<>,
assert_undefined<>,
default_policy,
default_policy,
default_policy,
default_policy,
default_policy,
default_policy,
default_policy>
{
typedef policy<domain_error<errno_on_error>, pole_error<errno_on_error>, overflow_error<errno_on_error>, evaluation_error<errno_on_error>, rounding_error<errno_on_error>, detail::forwarding_arg1, detail::forwarding_arg2> type;
};
}}} // namespaces
namespace c_policies{
using boost::math::policies::policy;
using boost::math::policies::errno_on_error;
using boost::math::policies::domain_error;
using boost::math::policies::pole_error;
using boost::math::policies::overflow_error;
using boost::math::policies::rounding_error;
using boost::math::policies::evaluation_error;
typedef policy<
domain_error<errno_on_error>,
pole_error<errno_on_error>,
overflow_error<errno_on_error>,
evaluation_error<errno_on_error>,
rounding_error<errno_on_error>
> c_policy;
BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS(c_policy)
}