Chris@16
|
1 ///////////////////////////////////////////////////////////////
|
Chris@16
|
2 // Copyright 2012 John Maddock. Distributed under the Boost
|
Chris@16
|
3 // Software License, Version 1.0. (See accompanying file
|
Chris@16
|
4 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
|
Chris@16
|
5 //
|
Chris@16
|
6 // Comparison operators for cpp_int_backend:
|
Chris@16
|
7 //
|
Chris@16
|
8 #ifndef BOOST_MP_CPP_INT_LIM_HPP
|
Chris@16
|
9 #define BOOST_MP_CPP_INT_LIM_HPP
|
Chris@16
|
10
|
Chris@16
|
11 namespace std{
|
Chris@16
|
12
|
Chris@16
|
13 namespace detail{
|
Chris@16
|
14
|
Chris@16
|
15 template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
|
Chris@16
|
16 inline boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates>
|
Chris@16
|
17 get_min(const boost::mpl::true_&, const boost::mpl::true_&)
|
Chris@16
|
18 {
|
Chris@16
|
19 // Bounded and signed.
|
Chris@16
|
20 typedef boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> result_type;
|
Chris@16
|
21 typedef boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, Allocator>, ExpressionTemplates> ui_type;
|
Chris@16
|
22 static const result_type val = -result_type(~ui_type(0));
|
Chris@16
|
23 return val;
|
Chris@16
|
24 }
|
Chris@16
|
25
|
Chris@16
|
26 template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
|
Chris@16
|
27 inline boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates>
|
Chris@16
|
28 get_min(const boost::mpl::true_&, const boost::mpl::false_&)
|
Chris@16
|
29 {
|
Chris@16
|
30 // Bounded and unsigned:
|
Chris@16
|
31 static const boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> val(0u);
|
Chris@16
|
32 return val;
|
Chris@16
|
33 }
|
Chris@16
|
34
|
Chris@16
|
35 template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
|
Chris@16
|
36 inline boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates>
|
Chris@16
|
37 get_min(const boost::mpl::false_&, const boost::mpl::true_&)
|
Chris@16
|
38 {
|
Chris@16
|
39 // Unbounded and signed.
|
Chris@16
|
40 // There is no minimum value, just return 0:
|
Chris@16
|
41 static const boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> val(0u);
|
Chris@16
|
42 return val;
|
Chris@16
|
43 }
|
Chris@16
|
44
|
Chris@16
|
45 template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
|
Chris@16
|
46 inline boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates>
|
Chris@16
|
47 get_min(const boost::mpl::false_&, const boost::mpl::false_&)
|
Chris@16
|
48 {
|
Chris@16
|
49 // Unbound and unsigned:
|
Chris@16
|
50 static const boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> val(0u);
|
Chris@16
|
51 return val;
|
Chris@16
|
52 }
|
Chris@16
|
53
|
Chris@16
|
54 template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
|
Chris@16
|
55 inline boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates>
|
Chris@16
|
56 get_max(const boost::mpl::true_&, const boost::mpl::true_&)
|
Chris@16
|
57 {
|
Chris@16
|
58 // Bounded and signed.
|
Chris@16
|
59 typedef boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> result_type;
|
Chris@16
|
60 typedef boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, Allocator>, ExpressionTemplates> ui_type;
|
Chris@16
|
61 static const result_type val = ~ui_type(0);
|
Chris@16
|
62 return val;
|
Chris@16
|
63 }
|
Chris@16
|
64
|
Chris@16
|
65 template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
|
Chris@16
|
66 inline boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates>
|
Chris@16
|
67 get_max(const boost::mpl::true_&, const boost::mpl::false_&)
|
Chris@16
|
68 {
|
Chris@16
|
69 // Bound and unsigned:
|
Chris@16
|
70 typedef boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> result_type;
|
Chris@16
|
71 typedef boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, Allocator>, ExpressionTemplates> ui_type;
|
Chris@16
|
72 static const result_type val = ~ui_type(0);
|
Chris@16
|
73 return val;
|
Chris@16
|
74 }
|
Chris@16
|
75
|
Chris@16
|
76 template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
|
Chris@16
|
77 inline boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates>
|
Chris@16
|
78 get_max(const boost::mpl::false_&, const boost::mpl::true_&)
|
Chris@16
|
79 {
|
Chris@16
|
80 // Unbounded and signed.
|
Chris@16
|
81 // There is no maximum value, just return 0:
|
Chris@16
|
82 static const boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> val(0u);
|
Chris@16
|
83 return val;
|
Chris@16
|
84 }
|
Chris@16
|
85
|
Chris@16
|
86 template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
|
Chris@16
|
87 inline boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates>
|
Chris@16
|
88 get_max(const boost::mpl::false_&, const boost::mpl::false_&)
|
Chris@16
|
89 {
|
Chris@16
|
90 // Unbound and unsigned:
|
Chris@16
|
91 static const boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> val(0u);
|
Chris@16
|
92 return val;
|
Chris@16
|
93 }
|
Chris@16
|
94
|
Chris@16
|
95 }
|
Chris@16
|
96
|
Chris@16
|
97 template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
|
Chris@16
|
98 class numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >
|
Chris@16
|
99 {
|
Chris@16
|
100 typedef boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator> backend_type;
|
Chris@16
|
101 typedef boost::multiprecision::number<backend_type, ExpressionTemplates> number_type;
|
Chris@16
|
102
|
Chris@16
|
103 struct inititializer
|
Chris@16
|
104 {
|
Chris@16
|
105 inititializer()
|
Chris@16
|
106 {
|
Chris@16
|
107 (std::numeric_limits<number_type>::max)();
|
Chris@16
|
108 (std::numeric_limits<number_type>::min)();
|
Chris@16
|
109 }
|
Chris@16
|
110 void do_nothing()const{}
|
Chris@16
|
111 };
|
Chris@16
|
112
|
Chris@16
|
113 static const inititializer init;
|
Chris@16
|
114
|
Chris@16
|
115 public:
|
Chris@16
|
116 BOOST_STATIC_CONSTEXPR bool is_specialized = true;
|
Chris@16
|
117 //
|
Chris@16
|
118 // Largest and smallest numbers are bounded only by available memory, set
|
Chris@16
|
119 // to zero:
|
Chris@16
|
120 //
|
Chris@16
|
121 static number_type (min)()
|
Chris@16
|
122 {
|
Chris@16
|
123 init.do_nothing();
|
Chris@16
|
124 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>());
|
Chris@16
|
125 }
|
Chris@16
|
126 static number_type (max)()
|
Chris@16
|
127 {
|
Chris@16
|
128 init.do_nothing();
|
Chris@16
|
129 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>());
|
Chris@16
|
130 }
|
Chris@16
|
131 static number_type lowest() { return (min)(); }
|
Chris@16
|
132 BOOST_STATIC_CONSTEXPR int digits = boost::multiprecision::backends::max_precision<backend_type>::value == UINT_MAX ? INT_MAX : boost::multiprecision::backends::max_precision<backend_type>::value;
|
Chris@16
|
133 BOOST_STATIC_CONSTEXPR int digits10 = (digits > INT_MAX / 301) ? (digits / 1000) * 301L : (digits * 301) / 1000;
|
Chris@16
|
134 BOOST_STATIC_CONSTEXPR int max_digits10 = digits10 + 2;
|
Chris@16
|
135 BOOST_STATIC_CONSTEXPR bool is_signed = boost::multiprecision::is_signed_number<backend_type>::value;
|
Chris@16
|
136 BOOST_STATIC_CONSTEXPR bool is_integer = true;
|
Chris@16
|
137 BOOST_STATIC_CONSTEXPR bool is_exact = true;
|
Chris@16
|
138 BOOST_STATIC_CONSTEXPR int radix = 2;
|
Chris@16
|
139 static number_type epsilon() { return 0; }
|
Chris@16
|
140 static number_type round_error() { return 0; }
|
Chris@16
|
141 BOOST_STATIC_CONSTEXPR int min_exponent = 0;
|
Chris@16
|
142 BOOST_STATIC_CONSTEXPR int min_exponent10 = 0;
|
Chris@16
|
143 BOOST_STATIC_CONSTEXPR int max_exponent = 0;
|
Chris@16
|
144 BOOST_STATIC_CONSTEXPR int max_exponent10 = 0;
|
Chris@16
|
145 BOOST_STATIC_CONSTEXPR bool has_infinity = false;
|
Chris@16
|
146 BOOST_STATIC_CONSTEXPR bool has_quiet_NaN = false;
|
Chris@16
|
147 BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false;
|
Chris@16
|
148 BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent;
|
Chris@16
|
149 BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false;
|
Chris@16
|
150 static number_type infinity() { return 0; }
|
Chris@16
|
151 static number_type quiet_NaN() { return 0; }
|
Chris@16
|
152 static number_type signaling_NaN() { return 0; }
|
Chris@16
|
153 static number_type denorm_min() { return 0; }
|
Chris@16
|
154 BOOST_STATIC_CONSTEXPR bool is_iec559 = false;
|
Chris@16
|
155 BOOST_STATIC_CONSTEXPR bool is_bounded = boost::multiprecision::backends::is_fixed_precision<backend_type>::value;
|
Chris@16
|
156 BOOST_STATIC_CONSTEXPR bool is_modulo = (boost::multiprecision::backends::is_fixed_precision<backend_type>::value && (Checked == boost::multiprecision::unchecked));
|
Chris@16
|
157 BOOST_STATIC_CONSTEXPR bool traps = false;
|
Chris@16
|
158 BOOST_STATIC_CONSTEXPR bool tinyness_before = false;
|
Chris@16
|
159 BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero;
|
Chris@16
|
160 };
|
Chris@16
|
161
|
Chris@16
|
162 template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
|
Chris@16
|
163 const typename numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::inititializer numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::init;
|
Chris@16
|
164
|
Chris@16
|
165 #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
|
Chris@16
|
166
|
Chris@16
|
167 template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
|
Chris@16
|
168 BOOST_CONSTEXPR_OR_CONST int numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::digits;
|
Chris@16
|
169 template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
|
Chris@16
|
170 BOOST_CONSTEXPR_OR_CONST int numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::digits10;
|
Chris@16
|
171 template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
|
Chris@16
|
172 BOOST_CONSTEXPR_OR_CONST int numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::max_digits10;
|
Chris@16
|
173 template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
|
Chris@16
|
174 BOOST_CONSTEXPR_OR_CONST bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::is_signed;
|
Chris@16
|
175 template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
|
Chris@16
|
176 BOOST_CONSTEXPR_OR_CONST bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::is_integer;
|
Chris@16
|
177 template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
|
Chris@16
|
178 BOOST_CONSTEXPR_OR_CONST bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::is_exact;
|
Chris@16
|
179 template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
|
Chris@16
|
180 BOOST_CONSTEXPR_OR_CONST int numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::radix;
|
Chris@16
|
181 template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
|
Chris@16
|
182 BOOST_CONSTEXPR_OR_CONST int numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::min_exponent;
|
Chris@16
|
183 template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
|
Chris@16
|
184 BOOST_CONSTEXPR_OR_CONST int numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::min_exponent10;
|
Chris@16
|
185 template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
|
Chris@16
|
186 BOOST_CONSTEXPR_OR_CONST int numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::max_exponent;
|
Chris@16
|
187 template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
|
Chris@16
|
188 BOOST_CONSTEXPR_OR_CONST int numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::max_exponent10;
|
Chris@16
|
189 template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
|
Chris@16
|
190 BOOST_CONSTEXPR_OR_CONST bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::has_infinity;
|
Chris@16
|
191 template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
|
Chris@16
|
192 BOOST_CONSTEXPR_OR_CONST bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::has_quiet_NaN;
|
Chris@16
|
193 template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
|
Chris@16
|
194 BOOST_CONSTEXPR_OR_CONST bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::has_signaling_NaN;
|
Chris@16
|
195 template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
|
Chris@16
|
196 BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::has_denorm;
|
Chris@16
|
197 template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
|
Chris@16
|
198 BOOST_CONSTEXPR_OR_CONST bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::has_denorm_loss;
|
Chris@16
|
199 template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
|
Chris@16
|
200 BOOST_CONSTEXPR_OR_CONST bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::is_iec559;
|
Chris@16
|
201 template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
|
Chris@16
|
202 BOOST_CONSTEXPR_OR_CONST bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::is_bounded;
|
Chris@16
|
203 template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
|
Chris@16
|
204 BOOST_CONSTEXPR_OR_CONST bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::is_modulo;
|
Chris@16
|
205 template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
|
Chris@16
|
206 BOOST_CONSTEXPR_OR_CONST bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::traps;
|
Chris@16
|
207 template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
|
Chris@16
|
208 BOOST_CONSTEXPR_OR_CONST bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::tinyness_before;
|
Chris@16
|
209 template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
|
Chris@16
|
210 BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::round_style;
|
Chris@16
|
211
|
Chris@16
|
212 #endif
|
Chris@16
|
213
|
Chris@16
|
214 } // namespace std
|
Chris@16
|
215
|
Chris@16
|
216 #endif
|