// 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 #include namespace boost{ namespace math{ namespace policies{ template <> struct policy< domain_error, pole_error, overflow_error, evaluation_error, rounding_error, default_policy, default_policy, default_policy, default_policy, default_policy, default_policy> { public: typedef domain_error domain_error_type; typedef pole_error pole_error_type; typedef overflow_error overflow_error_type; typedef underflow_error underflow_error_type; typedef denorm_error denorm_error_type; typedef evaluation_error evaluation_error_type; typedef rounding_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, 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, pole_error, overflow_error, evaluation_error, rounding_error, detail::forwarding_arg1, detail::forwarding_arg2, default_policy, default_policy, default_policy, default_policy, default_policy, default_policy> { public: typedef domain_error domain_error_type; typedef pole_error pole_error_type; typedef overflow_error overflow_error_type; typedef underflow_error underflow_error_type; typedef denorm_error denorm_error_type; typedef evaluation_error evaluation_error_type; typedef rounding_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, 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 normalise, pole_error, overflow_error, evaluation_error, rounding_error >, promote_float, promote_double, discrete_quantile<>, assert_undefined<>, default_policy, default_policy, default_policy, default_policy, default_policy, default_policy, default_policy> { typedef policy, pole_error, overflow_error, evaluation_error, rounding_error, detail::forwarding_arg1, detail::forwarding_arg2> type; }; template <> struct normalise, pole_error, overflow_error, evaluation_error, rounding_error, detail::forwarding_arg1, detail::forwarding_arg2 >, promote_float, promote_double, discrete_quantile<>, assert_undefined<>, default_policy, default_policy, default_policy, default_policy, default_policy, default_policy, default_policy> { typedef policy, pole_error, overflow_error, evaluation_error, rounding_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, pole_error, overflow_error, evaluation_error, rounding_error > c_policy; BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS(c_policy) }