25 #ifndef PPL_mp_std_bits_defs_hh
26 #define PPL_mp_std_bits_defs_hh 1
31 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS
32 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS)
34 void swap(mpz_class& x, mpz_class& y);
36 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS
37 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS)
39 void swap(mpq_class& x, mpq_class& y);
41 #if __GNU_MP_VERSION < 5 \
42 || (__GNU_MP_VERSION == 5 && __GNU_MP_VERSION_MINOR < 1)
46 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS
47 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS)
50 class numeric_limits<mpz_class> {
55 static const bool is_specialized =
true;
56 static const int digits = 0;
57 static const int digits10 = 0;
58 static const bool is_signed =
true;
60 static const bool is_exact =
true;
61 static const int radix = 2;
62 static const int min_exponent = 0;
63 static const int min_exponent10 = 0;
64 static const int max_exponent = 0;
65 static const int max_exponent10 = 0;
66 static const bool has_infinity =
false;
67 static const bool has_quiet_NaN =
false;
68 static const bool has_signaling_NaN =
false;
69 static const float_denorm_style has_denorm = denorm_absent;
70 static const bool has_denorm_loss =
false;
71 static const bool is_iec559 =
false;
72 static const bool is_bounded =
false;
73 static const bool is_modulo =
false;
74 static const bool traps =
false;
75 static const bool tinyness_before =
false;
76 static const float_round_style round_style = round_toward_zero;
79 return static_cast<Type
>(0);
83 return static_cast<Type
>(0);
87 return static_cast<Type
>(0);
91 return static_cast<Type
>(0);
95 return static_cast<Type
>(0);
99 return static_cast<Type
>(0);
103 return static_cast<Type
>(1);
107 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS
108 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS)
111 class numeric_limits<mpq_class> {
116 static const bool is_specialized =
true;
117 static const int digits = 0;
118 static const int digits10 = 0;
119 static const bool is_signed =
true;
121 static const bool is_exact =
true;
122 static const int radix = 2;
123 static const int min_exponent = 0;
124 static const int min_exponent10 = 0;
125 static const int max_exponent = 0;
126 static const int max_exponent10 = 0;
127 static const bool has_infinity =
false;
128 static const bool has_quiet_NaN =
false;
129 static const bool has_signaling_NaN =
false;
130 static const float_denorm_style has_denorm = denorm_absent;
131 static const bool has_denorm_loss =
false;
132 static const bool is_iec559 =
false;
133 static const bool is_bounded =
false;
134 static const bool is_modulo =
false;
135 static const bool traps =
false;
136 static const bool tinyness_before =
false;
137 static const float_round_style round_style = round_toward_zero;
140 return static_cast<Type
>(0);
144 return static_cast<Type
>(0);
148 return static_cast<Type
>(0);
152 return static_cast<Type
>(0);
156 return static_cast<Type
>(0);
160 return static_cast<Type
>(0);
164 return static_cast<Type
>(0);
170 #endif // __GNU_MP_VERSION < 5
175 #endif // !defined(PPL_mp_std_bits_defs_hh)
Enable_If< Is_Native_Or_Checked< T >::value, bool >::type is_integer(const T &x)
The standard C++ namespace.
static Type round_error()
static Type round_error()
void swap(Affine_Space &x, Affine_Space &y)
Swaps x with y.