]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/math/src/tr1/c_policy.hpp
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / boost / libs / math / src / tr1 / c_policy.hpp
CommitLineData
7c673cae
FG
1// Copyright John Maddock 2008.
2// Use, modification and distribution are subject to the
3// Boost Software License, Version 1.0. (See accompanying file
4// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5//
6#include <boost/math/policies/policy.hpp>
7#include <boost/math/special_functions/math_fwd.hpp>
8
9namespace boost{ namespace math{ namespace policies{
10
11template <>
12struct policy<
13 domain_error<errno_on_error>,
14 pole_error<errno_on_error>,
15 overflow_error<errno_on_error>,
16 evaluation_error<errno_on_error>,
17 rounding_error<errno_on_error>,
18 default_policy, default_policy, default_policy, default_policy, default_policy, default_policy>
19{
20public:
21 typedef domain_error<errno_on_error> domain_error_type;
22 typedef pole_error<errno_on_error> pole_error_type;
23 typedef overflow_error<errno_on_error> overflow_error_type;
24 typedef underflow_error<errno_on_error> underflow_error_type;
25 typedef denorm_error<errno_on_error> denorm_error_type;
26 typedef evaluation_error<errno_on_error> evaluation_error_type;
27 typedef rounding_error<errno_on_error> rounding_error_type;
28 typedef indeterminate_result_error<> indeterminate_result_error_type;
29#if BOOST_MATH_DIGITS10_POLICY == 0
30 typedef digits2<> precision_type;
31#else
32 typedef detail::precision<digits10<>, digits2<> >::type precision_type;
33#endif
34 typedef promote_float<> promote_float_type;
35 typedef promote_double<> promote_double_type;
36 typedef discrete_quantile<> discrete_quantile_type;
37 typedef assert_undefined<> assert_undefined_type;
38 typedef max_series_iterations<> max_series_iterations_type;
39 typedef max_root_iterations<> max_root_iterations_type;
40};
41
42template <>
43struct policy<
44 domain_error<errno_on_error>,
45 pole_error<errno_on_error>,
46 overflow_error<errno_on_error>,
47 evaluation_error<errno_on_error>,
48 rounding_error<errno_on_error>,
49 detail::forwarding_arg1,
50 detail::forwarding_arg2,
51 default_policy, default_policy, default_policy, default_policy, default_policy, default_policy>
52{
53public:
54 typedef domain_error<errno_on_error> domain_error_type;
55 typedef pole_error<errno_on_error> pole_error_type;
56 typedef overflow_error<errno_on_error> overflow_error_type;
57 typedef underflow_error<errno_on_error> underflow_error_type;
58 typedef denorm_error<errno_on_error> denorm_error_type;
59 typedef evaluation_error<errno_on_error> evaluation_error_type;
60 typedef rounding_error<errno_on_error> rounding_error_type;
61 typedef indeterminate_result_error<> indeterminate_result_error_type;
62#if BOOST_MATH_DIGITS10_POLICY == 0
63 typedef digits2<> precision_type;
64#else
65 typedef detail::precision<digits10<>, digits2<> >::type precision_type;
66#endif
67 typedef promote_float<false> promote_float_type;
68 typedef promote_double<false> promote_double_type;
69 typedef discrete_quantile<> discrete_quantile_type;
70 typedef assert_undefined<> assert_undefined_type;
71 typedef max_series_iterations<> max_series_iterations_type;
72 typedef max_root_iterations<> max_root_iterations_type;
73};
74
75template <>
76struct 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> >,
77 promote_float<false>,
78 promote_double<false>,
79 discrete_quantile<>,
80 assert_undefined<>,
81 default_policy,
82 default_policy,
83 default_policy,
84 default_policy,
85 default_policy,
86 default_policy,
87 default_policy>
88{
89 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;
90};
91
92template <>
93struct 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 >,
94 promote_float<false>,
95 promote_double<false>,
96 discrete_quantile<>,
97 assert_undefined<>,
98 default_policy,
99 default_policy,
100 default_policy,
101 default_policy,
102 default_policy,
103 default_policy,
104 default_policy>
105{
106 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;
107};
108
109}}} // namespaces
110
111namespace c_policies{
112
113using boost::math::policies::policy;
114using boost::math::policies::errno_on_error;
115using boost::math::policies::domain_error;
116using boost::math::policies::pole_error;
117using boost::math::policies::overflow_error;
118using boost::math::policies::rounding_error;
119using boost::math::policies::evaluation_error;
120
121typedef policy<
122 domain_error<errno_on_error>,
123 pole_error<errno_on_error>,
124 overflow_error<errno_on_error>,
125 evaluation_error<errno_on_error>,
126 rounding_error<errno_on_error>
127> c_policy;
128
129BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS(c_policy)
130
131}