]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | /////////////////////////////////////////////////////////////// |
2 | // Copyright 2012 John Maddock. Distributed under the Boost | |
3 | // Software License, Version 1.0. (See accompanying file | |
92f5a8d4 | 4 | // LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt |
7c673cae FG |
5 | // |
6 | // Comparison operators for cpp_int_backend: | |
7 | // | |
8 | #ifndef BOOST_MP_CPP_INT_LIM_HPP | |
9 | #define BOOST_MP_CPP_INT_LIM_HPP | |
10 | ||
20effc67 TL |
11 | #include <boost/multiprecision/traits/max_digits10.hpp> |
12 | ||
92f5a8d4 | 13 | namespace std { |
7c673cae | 14 | |
92f5a8d4 | 15 | namespace detail { |
7c673cae | 16 | |
1e59de90 | 17 | #ifdef BOOST_MSVC |
7c673cae | 18 | #pragma warning(push) |
92f5a8d4 | 19 | #pragma warning(disable : 4307) |
7c673cae FG |
20 | #endif |
21 | ||
1e59de90 | 22 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates> |
92f5a8d4 | 23 | inline BOOST_CXX14_CONSTEXPR_IF_DETECTION boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> |
1e59de90 | 24 | get_min(const std::integral_constant<bool, true>&, const std::integral_constant<bool, true>&, const std::integral_constant<bool, true>&) |
92f5a8d4 TL |
25 | { |
26 | // Bounded, signed, and no allocator. | |
1e59de90 TL |
27 | using result_type = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> ; |
28 | using ui_type = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MaxBits, MaxBits, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked>, ExpressionTemplates>; | |
92f5a8d4 TL |
29 | #ifdef BOOST_MP_NO_CONSTEXPR_DETECTION |
30 | static | |
31 | #else | |
32 | constexpr | |
33 | #endif | |
34 | const result_type val = -result_type(~ui_type(0)); | |
35 | return val; | |
36 | } | |
37 | ||
1e59de90 | 38 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates> |
7c673cae | 39 | inline boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> |
1e59de90 | 40 | get_min(const std::integral_constant<bool, true>&, const std::integral_constant<bool, true>&, const std::integral_constant<bool, false>&) |
7c673cae | 41 | { |
92f5a8d4 | 42 | // Bounded, signed, and an allocator (can't be constexpr). |
1e59de90 TL |
43 | using result_type = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> ; |
44 | using ui_type = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MaxBits, MaxBits, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked>, ExpressionTemplates>; | |
92f5a8d4 TL |
45 | static const result_type val = -result_type(~ui_type(0)); |
46 | return val; | |
47 | } | |
48 | ||
1e59de90 | 49 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates> |
92f5a8d4 | 50 | inline BOOST_CXX14_CONSTEXPR_IF_DETECTION boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> |
1e59de90 | 51 | get_min(const std::integral_constant<bool, true>&, const std::integral_constant<bool, false>&, const std::integral_constant<bool, true>&) |
92f5a8d4 TL |
52 | { |
53 | // Bounded, unsigned, no allocator (can be constexpr): | |
54 | #ifdef BOOST_MP_NO_CONSTEXPR_DETECTION | |
55 | static | |
56 | #else | |
57 | constexpr | |
58 | #endif | |
59 | const boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> val(0u); | |
7c673cae FG |
60 | return val; |
61 | } | |
62 | ||
1e59de90 | 63 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates> |
7c673cae | 64 | inline boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> |
1e59de90 | 65 | get_min(const std::integral_constant<bool, true>&, const std::integral_constant<bool, false>&, const std::integral_constant<bool, false>&) |
7c673cae | 66 | { |
1e59de90 | 67 | // Bounded and std::size_t with allocator (no constexpr): |
7c673cae FG |
68 | static const boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> val(0u); |
69 | return val; | |
70 | } | |
71 | ||
1e59de90 | 72 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates, bool has_allocator> |
7c673cae | 73 | inline boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> |
1e59de90 | 74 | get_min(const std::integral_constant<bool, false>&, const std::integral_constant<bool, true>&, const std::integral_constant<bool, has_allocator>&) |
7c673cae | 75 | { |
92f5a8d4 | 76 | // Unbounded and signed, never constexpr because there must be an allocator. |
7c673cae FG |
77 | // There is no minimum value, just return 0: |
78 | static const boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> val(0u); | |
79 | return val; | |
80 | } | |
81 | ||
1e59de90 | 82 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates, bool has_allocator> |
7c673cae | 83 | inline boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> |
1e59de90 | 84 | get_min(const std::integral_constant<bool, false>&, const std::integral_constant<bool, false>&, const std::integral_constant<bool, has_allocator>&) |
7c673cae | 85 | { |
92f5a8d4 | 86 | // Unbound and unsigned, never constexpr because there must be an allocator. |
7c673cae FG |
87 | static const boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> val(0u); |
88 | return val; | |
89 | } | |
90 | ||
1e59de90 | 91 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates> |
92f5a8d4 | 92 | inline BOOST_CXX14_CONSTEXPR_IF_DETECTION boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> |
1e59de90 | 93 | get_max(const std::integral_constant<bool, true>&, const std::integral_constant<bool, true>&, const std::integral_constant<bool, true>&) |
7c673cae | 94 | { |
92f5a8d4 | 95 | // Bounded and signed, no allocator, can be constexpr. |
1e59de90 TL |
96 | using result_type = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> ; |
97 | using ui_type = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MaxBits, MaxBits, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked>, ExpressionTemplates>; | |
92f5a8d4 TL |
98 | #ifdef BOOST_MP_NO_CONSTEXPR_DETECTION |
99 | static | |
100 | #else | |
101 | constexpr | |
102 | #endif | |
103 | const result_type val = ~ui_type(0); | |
7c673cae FG |
104 | return val; |
105 | } | |
106 | ||
1e59de90 | 107 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates> |
7c673cae | 108 | inline boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> |
1e59de90 | 109 | get_max(const std::integral_constant<bool, true>&, const std::integral_constant<bool, true>&, const std::integral_constant<bool, false>&) |
7c673cae | 110 | { |
92f5a8d4 | 111 | // Bounded and signed, has an allocator, never constexpr. |
1e59de90 TL |
112 | using result_type = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> ; |
113 | using ui_type = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MaxBits, MaxBits, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked>, ExpressionTemplates>; | |
92f5a8d4 TL |
114 | static const result_type val = ~ui_type(0); |
115 | return val; | |
116 | } | |
117 | ||
1e59de90 | 118 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates> |
92f5a8d4 | 119 | inline BOOST_CXX14_CONSTEXPR_IF_DETECTION boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> |
1e59de90 | 120 | get_max(const std::integral_constant<bool, true>&, const std::integral_constant<bool, false>&, const std::integral_constant<bool, true>&) |
92f5a8d4 TL |
121 | { |
122 | // Bound and unsigned, no allocator so can be constexpr: | |
1e59de90 TL |
123 | using result_type = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> ; |
124 | using ui_type = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, Allocator>, ExpressionTemplates>; | |
92f5a8d4 TL |
125 | #ifdef BOOST_MP_NO_CONSTEXPR_DETECTION |
126 | static | |
127 | #else | |
128 | constexpr | |
129 | #endif | |
130 | const result_type val = ~ui_type(0); | |
7c673cae FG |
131 | return val; |
132 | } | |
133 | ||
1e59de90 | 134 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates> |
7c673cae | 135 | inline boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> |
1e59de90 | 136 | get_max(const std::integral_constant<bool, true>&, const std::integral_constant<bool, false>&, const std::integral_constant<bool, false>&) |
92f5a8d4 TL |
137 | { |
138 | // Bound and unsigned, has an allocator so can never be constexpr: | |
1e59de90 TL |
139 | using result_type = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> ; |
140 | using ui_type = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, Allocator>, ExpressionTemplates>; | |
92f5a8d4 TL |
141 | static const result_type val = ~ui_type(0); |
142 | return val; | |
143 | } | |
144 | ||
1e59de90 | 145 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates, bool has_allocator> |
92f5a8d4 | 146 | inline boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> |
1e59de90 | 147 | get_max(const std::integral_constant<bool, false>&, const std::integral_constant<bool, true>&, const std::integral_constant<bool, has_allocator>&) |
7c673cae FG |
148 | { |
149 | // Unbounded and signed. | |
150 | // There is no maximum value, just return 0: | |
151 | static const boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> val(0u); | |
152 | return val; | |
153 | } | |
154 | ||
1e59de90 | 155 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates, bool has_allocator> |
7c673cae | 156 | inline boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> |
1e59de90 | 157 | get_max(const std::integral_constant<bool, false>&, const std::integral_constant<bool, false>&, const std::integral_constant<bool, has_allocator>&) |
7c673cae FG |
158 | { |
159 | // Unbound and unsigned: | |
160 | static const boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> val(0u); | |
161 | return val; | |
162 | } | |
163 | ||
92f5a8d4 | 164 | } // namespace detail |
7c673cae | 165 | |
1e59de90 | 166 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates> |
7c673cae FG |
167 | class numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> > |
168 | { | |
1e59de90 TL |
169 | using backend_type = boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>; |
170 | using number_type = boost::multiprecision::number<backend_type, ExpressionTemplates> ; | |
7c673cae | 171 | |
92f5a8d4 | 172 | public: |
1e59de90 | 173 | static constexpr bool is_specialized = true; |
7c673cae FG |
174 | // |
175 | // Largest and smallest numbers are bounded only by available memory, set | |
176 | // to zero: | |
177 | // | |
92f5a8d4 | 178 | static BOOST_CXX14_CONSTEXPR_IF_DETECTION number_type(min)() |
7c673cae | 179 | { |
1e59de90 | 180 | return detail::get_min<MinBits, MaxBits, SignType, Checked, Allocator, ExpressionTemplates>(boost::multiprecision::backends::is_fixed_precision<backend_type>(), boost::multiprecision::is_signed_number<backend_type>(), std::integral_constant<bool, std::is_void<Allocator>::value>()); |
7c673cae | 181 | } |
92f5a8d4 TL |
182 | static BOOST_CXX14_CONSTEXPR_IF_DETECTION number_type(max)() |
183 | { | |
1e59de90 | 184 | return detail::get_max<MinBits, MaxBits, SignType, Checked, Allocator, ExpressionTemplates>(boost::multiprecision::backends::is_fixed_precision<backend_type>(), boost::multiprecision::is_signed_number<backend_type>(), std::integral_constant<bool, std::is_void<Allocator>::value>()); |
7c673cae | 185 | } |
92f5a8d4 | 186 | static BOOST_CXX14_CONSTEXPR_IF_DETECTION number_type lowest() { return (min)(); } |
1e59de90 TL |
187 | static constexpr int digits = boost::multiprecision::backends::max_precision<backend_type>::value == SIZE_MAX ? INT_MAX : boost::multiprecision::backends::max_precision<backend_type>::value; |
188 | static constexpr int digits10 = boost::multiprecision::detail::calc_digits10_s<digits>::value; | |
189 | static constexpr int max_digits10 = boost::multiprecision::detail::calc_max_digits10_s<digits>::value; | |
190 | static constexpr bool is_signed = boost::multiprecision::is_signed_number<backend_type>::value; | |
191 | static constexpr bool is_integer = true; | |
192 | static constexpr bool is_exact = true; | |
193 | static constexpr int radix = 2; | |
92f5a8d4 TL |
194 | static BOOST_CXX14_CONSTEXPR_IF_DETECTION number_type epsilon() { return 0; } |
195 | static BOOST_CXX14_CONSTEXPR_IF_DETECTION number_type round_error() { return 0; } | |
1e59de90 TL |
196 | static constexpr int min_exponent = 0; |
197 | static constexpr int min_exponent10 = 0; | |
198 | static constexpr int max_exponent = 0; | |
199 | static constexpr int max_exponent10 = 0; | |
200 | static constexpr bool has_infinity = false; | |
201 | static constexpr bool has_quiet_NaN = false; | |
202 | static constexpr bool has_signaling_NaN = false; | |
203 | static constexpr float_denorm_style has_denorm = denorm_absent; | |
204 | static constexpr bool has_denorm_loss = false; | |
92f5a8d4 TL |
205 | static BOOST_CXX14_CONSTEXPR_IF_DETECTION number_type infinity() { return 0; } |
206 | static BOOST_CXX14_CONSTEXPR_IF_DETECTION number_type quiet_NaN() { return 0; } | |
207 | static BOOST_CXX14_CONSTEXPR_IF_DETECTION number_type signaling_NaN() { return 0; } | |
208 | static BOOST_CXX14_CONSTEXPR_IF_DETECTION number_type denorm_min() { return 0; } | |
1e59de90 TL |
209 | static constexpr bool is_iec559 = false; |
210 | static constexpr bool is_bounded = boost::multiprecision::backends::is_fixed_precision<backend_type>::value; | |
211 | static constexpr bool is_modulo = (boost::multiprecision::backends::is_fixed_precision<backend_type>::value && (Checked == boost::multiprecision::unchecked)); | |
212 | static constexpr bool traps = false; | |
213 | static constexpr bool tinyness_before = false; | |
214 | static constexpr float_round_style round_style = round_toward_zero; | |
7c673cae FG |
215 | }; |
216 | ||
1e59de90 TL |
217 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates> |
218 | constexpr int numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::digits; | |
219 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates> | |
220 | constexpr int numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::digits10; | |
221 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates> | |
222 | constexpr int numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::max_digits10; | |
223 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates> | |
224 | constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::is_signed; | |
225 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates> | |
226 | constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::is_integer; | |
227 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates> | |
228 | constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::is_exact; | |
229 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates> | |
230 | constexpr int numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::radix; | |
231 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates> | |
232 | constexpr int numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::min_exponent; | |
233 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates> | |
234 | constexpr int numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::min_exponent10; | |
235 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates> | |
236 | constexpr int numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::max_exponent; | |
237 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates> | |
238 | constexpr int numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::max_exponent10; | |
239 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates> | |
240 | constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::has_infinity; | |
241 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates> | |
242 | constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::has_quiet_NaN; | |
243 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates> | |
244 | constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::has_signaling_NaN; | |
245 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates> | |
246 | constexpr float_denorm_style numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::has_denorm; | |
247 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates> | |
248 | constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::has_denorm_loss; | |
249 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates> | |
250 | constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::is_iec559; | |
251 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates> | |
252 | constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::is_bounded; | |
253 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates> | |
254 | constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::is_modulo; | |
255 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates> | |
256 | constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::traps; | |
257 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates> | |
258 | constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::tinyness_before; | |
259 | template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates> | |
260 | constexpr float_round_style numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::round_style; | |
7c673cae | 261 | |
1e59de90 | 262 | #ifdef BOOST_MSVC |
7c673cae FG |
263 | #pragma warning(pop) |
264 | #endif | |
265 | ||
266 | } // namespace std | |
267 | ||
268 | #endif |