#include <Checked_Number.defs.hh>
Public Member Functions | |
bool | OK () const |
Checks if all the invariants are satisfied. | |
Result | classify (bool nan=true, bool inf=true, bool sign=true) const |
Classifies *this. | |
Constructors | |
Checked_Number () | |
Default constructor. | |
Checked_Number (const Checked_Number &y) | |
Copy-constructor. | |
template<typename From, typename From_Policy> | |
Checked_Number (const Checked_Number< From, From_Policy > &y, Rounding_Dir dir) | |
Direct initialization from a Checked_Number and rounding mode. | |
Checked_Number (signed char y, Rounding_Dir dir) | |
Direct initialization from a signed char and rounding mode. | |
Checked_Number (signed short y, Rounding_Dir dir) | |
Direct initialization from a signed short and rounding mode. | |
Checked_Number (signed int y, Rounding_Dir dir) | |
Direct initialization from a signed int and rounding mode. | |
Checked_Number (signed long y, Rounding_Dir dir) | |
Direct initialization from a signed long and rounding mode. | |
Checked_Number (signed long long y, Rounding_Dir dir) | |
Direct initialization from a signed long long and rounding mode. | |
Checked_Number (unsigned char y, Rounding_Dir dir) | |
Direct initialization from an unsigned char and rounding mode. | |
Checked_Number (unsigned short y, Rounding_Dir dir) | |
Direct initialization from an unsigned short and rounding mode. | |
Checked_Number (unsigned int y, Rounding_Dir dir) | |
Direct initialization from an unsigned int and rounding mode. | |
Checked_Number (unsigned long y, Rounding_Dir dir) | |
Direct initialization from an unsigned long and rounding mode. | |
Checked_Number (unsigned long long y, Rounding_Dir dir) | |
Direct initialization from an unsigned long long and rounding mode. | |
Checked_Number (const mpq_class &y, Rounding_Dir dir) | |
Direct initialization from a rational and rounding mode. | |
Checked_Number (const mpz_class &y, Rounding_Dir dir) | |
Direct initialization from an unbounded integer and rounding mode. | |
Checked_Number (const char *y, Rounding_Dir dir) | |
Direct initialization from a C string and rounding mode. | |
template<typename From> | |
Checked_Number (const From &, Rounding_Dir dir, typename Enable_If< Is_Special< From >::value, bool >::type ignored=false) | |
Direct initialization from special and rounding mode. | |
template<typename From, typename From_Policy> | |
Checked_Number (const Checked_Number< From, From_Policy > &y) | |
Direct initialization from a Checked_Number, default rounding mode. | |
Checked_Number (signed char y) | |
Direct initialization from a signed char, default rounding mode. | |
Checked_Number (signed short y) | |
Direct initialization from a signed short, default rounding mode. | |
Checked_Number (signed int y) | |
Direct initialization from a signed int, default rounding mode. | |
Checked_Number (signed long y) | |
Direct initialization from a signed long, default rounding mode. | |
Checked_Number (signed long long y) | |
Direct initialization from a signed long long, default rounding mode. | |
Checked_Number (unsigned char y) | |
Direct initialization from an unsigned char, default rounding mode. | |
Checked_Number (unsigned short y) | |
Direct initialization from an unsigned short, default rounding mode. | |
Checked_Number (unsigned int y) | |
Direct initialization from an unsigned int, default rounding mode. | |
Checked_Number (unsigned long y) | |
Direct initialization from an unsigned long, default rounding mode. | |
Checked_Number (unsigned long long y) | |
Direct initialization from an unsigned long long, default rounding mode. | |
Checked_Number (float y) | |
Direct initialization from a float, default rounding mode. | |
Checked_Number (double y) | |
Direct initialization from a double, default rounding mode. | |
Checked_Number (long double y) | |
Direct initialization from a long double, default rounding mode. | |
Checked_Number (const mpq_class &y) | |
Direct initialization from a rational, default rounding mode. | |
Checked_Number (const mpz_class &y) | |
Direct initialization from an unbounded integer, default rounding mode. | |
Checked_Number (const char *y) | |
Direct initialization from a C string, default rounding mode. | |
template<typename From> | |
Checked_Number (const From &, typename Enable_If< Is_Special< From >::value, bool >::type ignored=false) | |
Direct initialization from special, default rounding mode. | |
Accessors and Conversions | |
operator T () const | |
Conversion operator: returns a copy of the underlying numeric value. | |
T & | raw_value () |
Returns a reference to the underlying numeric value. | |
const T & | raw_value () const |
Returns a const reference to the underlying numeric value. | |
Assignment Operators | |
Checked_Number & | operator= (const Checked_Number &y) |
Assignment operator. | |
template<typename From> | |
Checked_Number & | operator= (const From &y) |
Assignment operator. | |
template<typename From_Policy> | |
Checked_Number & | operator+= (const Checked_Number< T, From_Policy > &y) |
Add and assign operator. | |
Checked_Number & | operator+= (const T &y) |
Add and assign operator. | |
template<typename From> | |
Enable_If < Is_Native_Or_Checked< From > ::value, Checked_Number< T, Policy > & >::type | operator+= (const From &y) |
Add and assign operator. | |
template<typename From_Policy> | |
Checked_Number & | operator-= (const Checked_Number< T, From_Policy > &y) |
Subtract and assign operator. | |
Checked_Number & | operator-= (const T &y) |
Subtract and assign operator. | |
template<typename From> | |
Enable_If < Is_Native_Or_Checked< From > ::value, Checked_Number< T, Policy > & >::type | operator-= (const From &y) |
Subtract and assign operator. | |
template<typename From_Policy> | |
Checked_Number & | operator*= (const Checked_Number< T, From_Policy > &y) |
Multiply and assign operator. | |
Checked_Number & | operator*= (const T &y) |
Multiply and assign operator. | |
template<typename From> | |
Enable_If < Is_Native_Or_Checked< From > ::value, Checked_Number< T, Policy > & >::type | operator*= (const From &y) |
Multiply and assign operator. | |
template<typename From_Policy> | |
Checked_Number & | operator/= (const Checked_Number< T, From_Policy > &y) |
Divide and assign operator. | |
Checked_Number & | operator/= (const T &y) |
Divide and assign operator. | |
template<typename From> | |
Enable_If < Is_Native_Or_Checked< From > ::value, Checked_Number< T, Policy > & >::type | operator/= (const From &y) |
Divide and assign operator. | |
template<typename From_Policy> | |
Checked_Number & | operator%= (const Checked_Number< T, From_Policy > &y) |
Compute remainder and assign operator. | |
Checked_Number & | operator%= (const T &y) |
Compute remainder and assign operator. | |
template<typename From> | |
Enable_If < Is_Native_Or_Checked< From > ::value, Checked_Number< T, Policy > & >::type | operator%= (const From &y) |
Compute remainder and assign operator. | |
Increment and Decrement Operators | |
Checked_Number & | operator++ () |
Pre-increment operator. | |
Checked_Number | operator++ (int) |
Post-increment operator. | |
Checked_Number & | operator-- () |
Pre-decrement operator. | |
Checked_Number | operator-- (int) |
Post-decrement operator. | |
Private Attributes | |
T | v |
The underlying numeric value. | |
Related Functions | |
(Note that these are not member functions.) | |
template<typename T> | |
Enable_If < Is_Native_Or_Checked< T > ::value, bool >::type | is_not_a_number (const T &x) |
template<typename T> | |
Enable_If < Is_Native_Or_Checked< T > ::value, bool >::type | is_minus_infinity (const T &x) |
template<typename T> | |
Enable_If < Is_Native_Or_Checked< T > ::value, bool >::type | is_plus_infinity (const T &x) |
template<typename T> | |
Enable_If < Is_Native_Or_Checked< T > ::value, int >::type | is_infinity (const T &x) |
template<typename T> | |
Enable_If < Is_Native_Or_Checked< T > ::value, bool >::type | is_integer (const T &x) |
template<typename To, typename From> | |
Enable_If < Is_Native_Or_Checked< To > ::value &&Is_Special< From > ::value, Result >::type | construct (To &to, const From &x, Rounding_Dir dir) |
template<typename To, typename From> | |
Enable_If < Is_Native_Or_Checked< To > ::value &&Is_Special< From > ::value, Result >::type | assign_r (To &to, const From &x, Rounding_Dir dir) |
template<typename To> | |
Enable_If < Is_Native_Or_Checked< To > ::value, Result >::type | assign_r (To &to, const char *x, Rounding_Dir dir) |
template<typename To, typename To_Policy> | |
Enable_If < Is_Native_Or_Checked< To > ::value, Result >::type | assign_r (To &to, char *x, Rounding_Dir dir) |
template<typename T, typename Policy> | |
void | swap (Checked_Number< T, Policy > &x, Checked_Number< T, Policy > &y) |
Swaps x with y . | |
template<typename T, typename Policy> | |
const T & | raw_value (const Checked_Number< T, Policy > &x) |
template<typename T, typename Policy> | |
T & | raw_value (Checked_Number< T, Policy > &x) |
Memory Size Inspection Functions | |
template<typename T, typename Policy> | |
size_t | total_memory_in_bytes (const Checked_Number< T, Policy > &x) |
Returns the total size in bytes of the memory occupied by x . | |
template<typename T, typename Policy> | |
memory_size_type | external_memory_in_bytes (const Checked_Number< T, Policy > &x) |
Returns the size in bytes of the memory managed by x . | |
Arithmetic Operators | |
template<typename T, typename Policy> | |
Checked_Number< T, Policy > | operator+ (const Checked_Number< T, Policy > &x) |
Unary plus operator. | |
template<typename T, typename Policy> | |
Checked_Number< T, Policy > | operator- (const Checked_Number< T, Policy > &x) |
Unary minus operator. | |
template<typename T, typename Policy> | |
void | floor_assign (Checked_Number< T, Policy > &x) |
Assigns to x largest integral value not greater than x . | |
template<typename T, typename Policy> | |
void | floor_assign (Checked_Number< T, Policy > &x, const Checked_Number< T, Policy > &y) |
Assigns to x largest integral value not greater than y . | |
template<typename T, typename Policy> | |
void | ceil_assign (Checked_Number< T, Policy > &x) |
Assigns to x smallest integral value not less than x . | |
template<typename T, typename Policy> | |
void | ceil_assign (Checked_Number< T, Policy > &x, const Checked_Number< T, Policy > &y) |
Assigns to x smallest integral value not less than y . | |
template<typename T, typename Policy> | |
void | trunc_assign (Checked_Number< T, Policy > &x) |
Round x to the nearest integer not larger in absolute value. | |
template<typename T, typename Policy> | |
void | trunc_assign (Checked_Number< T, Policy > &x, const Checked_Number< T, Policy > &y) |
Assigns to x the value of y rounded to the nearest integer not larger in absolute value. | |
template<typename T, typename Policy> | |
void | neg_assign (Checked_Number< T, Policy > &x) |
Assigns to x its negation. | |
template<typename T, typename Policy> | |
void | neg_assign (Checked_Number< T, Policy > &x, const Checked_Number< T, Policy > &y) |
Assigns to x the negation of y . | |
template<typename T, typename Policy> | |
void | abs_assign (Checked_Number< T, Policy > &x) |
Assigns to x its absolute value. | |
template<typename T, typename Policy> | |
void | abs_assign (Checked_Number< T, Policy > &x, const Checked_Number< T, Policy > &y) |
Assigns to x the absolute value of y . | |
template<typename T, typename Policy> | |
void | add_mul_assign (Checked_Number< T, Policy > &x, const Checked_Number< T, Policy > &y, const Checked_Number< T, Policy > &z) |
Assigns to x the value x + y * z . | |
template<typename T, typename Policy> | |
void | sub_mul_assign (Checked_Number< T, Policy > &x, const Checked_Number< T, Policy > &y, const Checked_Number< T, Policy > &z) |
Assigns to x the value x - y * z . | |
template<typename T, typename Policy> | |
void | gcd_assign (Checked_Number< T, Policy > &x, const Checked_Number< T, Policy > &y, const Checked_Number< T, Policy > &z) |
Assigns to x the greatest common divisor of y and z . | |
template<typename T, typename Policy> | |
void | gcdext_assign (Checked_Number< T, Policy > &x, Checked_Number< T, Policy > &s, Checked_Number< T, Policy > &t, const Checked_Number< T, Policy > &y, const Checked_Number< T, Policy > &z) |
Assigns to x the greatest common divisor of y and z , setting s and t such that s*y + t*z = x = gcd(y, z). | |
template<typename T, typename Policy> | |
void | lcm_assign (Checked_Number< T, Policy > &x, const Checked_Number< T, Policy > &y, const Checked_Number< T, Policy > &z) |
Assigns to x the least common multiple of y and z . | |
template<typename T, typename Policy> | |
void | exact_div_assign (Checked_Number< T, Policy > &x, const Checked_Number< T, Policy > &y, const Checked_Number< T, Policy > &z) |
If z divides y , assigns to x the quotient of the integer division of y and z . | |
template<typename T, typename Policy> | |
void | sqrt_assign (Checked_Number< T, Policy > &x, const Checked_Number< T, Policy > &y) |
Assigns to x the integer square root of y . | |
Relational Operators and Comparison Functions | |
template<typename T1, typename T2> | |
Enable_If < Is_Native_Or_Checked< T1 > ::value &&Is_Native_Or_Checked < T2 >::value &&(Is_Checked < T1 >::value||Is_Checked< T2 > ::value), bool >::type | operator== (const T1 &x, const T2 &y) |
Equality operator. | |
template<typename T1, typename T2> | |
Enable_If < Is_Native_Or_Checked< T1 > ::value &&Is_Native_Or_Checked < T2 >::value &&(Is_Checked < T1 >::value||Is_Checked< T2 > ::value), bool >::type | operator!= (const T1 &x, const T2 &y) |
Disequality operator. | |
template<typename T1, typename T2> | |
Enable_If < Is_Native_Or_Checked< T1 > ::value &&Is_Native_Or_Checked < T2 >::value &&(Is_Checked < T1 >::value||Is_Checked< T2 > ::value), bool >::type | operator>= (const T1 &x, const T2 &y) |
Greater than or equal to operator. | |
template<typename T1, typename T2> | |
Enable_If < Is_Native_Or_Checked< T1 > ::value &&Is_Native_Or_Checked < T2 >::value &&(Is_Checked < T1 >::value||Is_Checked< T2 > ::value), bool >::type | operator> (const T1 &x, const T2 &y) |
Greater than operator. | |
template<typename T1, typename T2> | |
Enable_If < Is_Native_Or_Checked< T1 > ::value &&Is_Native_Or_Checked < T2 >::value &&(Is_Checked < T1 >::value||Is_Checked< T2 > ::value), bool >::type | operator<= (const T1 &x, const T2 &y) |
Less than or equal to operator. | |
template<typename T1, typename T2> | |
Enable_If < Is_Native_Or_Checked< T1 > ::value &&Is_Native_Or_Checked < T2 >::value &&(Is_Checked < T1 >::value||Is_Checked< T2 > ::value), bool >::type | operator< (const T1 &x, const T2 &y) |
Less than operator. | |
template<typename From> | |
Enable_If < Is_Native_Or_Checked< From > ::value, int >::type | sgn (const From &x) |
Returns ![]() ![]() ![]() x is negative, zero or positive, respectively. | |
template<typename From1, typename From2> | |
Enable_If < Is_Native_Or_Checked< From1 > ::value &&Is_Native_Or_Checked < From2 >::value, int >::type | cmp (const From1 &x, const From2 &y) |
Returns a negative, zero or positive value depending on whether x is lower than, equal to or greater than y , respectively. | |
Input-Output Operators | |
template<typename T> | |
Enable_If < Is_Native_Or_Checked< T > ::value, Result >::type | output (std::ostream &os, const T &x, const Numeric_Format &fmt, Rounding_Dir dir) |
template<typename T, typename Policy> | |
std::ostream & | operator<< (std::ostream &os, const Checked_Number< T, Policy > &x) |
Output operator. | |
template<typename T> | |
Enable_If < Is_Native_Or_Checked< T > ::value, Result >::type | input (T &x, std::istream &is, Rounding_Dir dir) |
Input function. | |
template<typename T, typename Policy> | |
std::istream & | operator>> (std::istream &is, Checked_Number< T, Policy > &x) |
Input operator. |
The wrapper and related functions implement an interface which is common to all kinds of coefficient types, therefore allowing for a uniform coding style. This class also implements the policy encoded by the second template parameter. The default policy is to perform the detection of overflow errors.
Definition at line 216 of file Checked_Number.defs.hh.
Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | ) | [inline] |
Default constructor.
Definition at line 84 of file Checked_Number.inlines.hh.
00085 : v(0) { 00086 }
Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | const Checked_Number< T, Policy > & | y | ) | [inline] |
Copy-constructor.
Definition at line 90 of file Checked_Number.inlines.hh.
References Parma_Polyhedra_Library::Checked_Number< T, Policy >::raw_value(), and Parma_Polyhedra_Library::Checked_Number< T, Policy >::v.
00090 { 00091 // TODO: avoid default construction of value member. 00092 Checked::copy<Policy, Policy>(v, y.raw_value()); 00093 }
Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | const Checked_Number< From, From_Policy > & | y, | |
Rounding_Dir | dir | |||
) | [inline] |
Direct initialization from a Checked_Number and rounding mode.
Definition at line 99 of file Checked_Number.inlines.hh.
References Parma_Polyhedra_Library::check_result(), Parma_Polyhedra_Library::Checked_Number< T, Policy >::raw_value(), Parma_Polyhedra_Library::rounding_dir(), and Parma_Polyhedra_Library::Checked_Number< T, Policy >::v.
00100 { 00101 // TODO: avoid default construction of value member. 00102 Policy::handle_result(check_result(Checked::assign_ext<Policy, From_Policy> 00103 (v, 00104 y.raw_value(), 00105 rounding_dir(dir)), 00106 dir) 00107 ); 00108 }
Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | signed char | y, | |
Rounding_Dir | dir | |||
) |
Direct initialization from a signed char and rounding mode.
Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | signed short | y, | |
Rounding_Dir | dir | |||
) |
Direct initialization from a signed short and rounding mode.
Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | signed int | y, | |
Rounding_Dir | dir | |||
) |
Direct initialization from a signed int and rounding mode.
Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | signed long | y, | |
Rounding_Dir | dir | |||
) |
Direct initialization from a signed long and rounding mode.
Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | signed long long | y, | |
Rounding_Dir | dir | |||
) |
Direct initialization from a signed long long and rounding mode.
Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | unsigned char | y, | |
Rounding_Dir | dir | |||
) |
Direct initialization from an unsigned char and rounding mode.
Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | unsigned short | y, | |
Rounding_Dir | dir | |||
) |
Direct initialization from an unsigned short and rounding mode.
Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | unsigned int | y, | |
Rounding_Dir | dir | |||
) |
Direct initialization from an unsigned int and rounding mode.
Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | unsigned long | y, | |
Rounding_Dir | dir | |||
) |
Direct initialization from an unsigned long and rounding mode.
Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | unsigned long long | y, | |
Rounding_Dir | dir | |||
) |
Direct initialization from an unsigned long long and rounding mode.
Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | const mpq_class & | y, | |
Rounding_Dir | dir | |||
) |
Direct initialization from a rational and rounding mode.
Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | const mpz_class & | y, | |
Rounding_Dir | dir | |||
) |
Direct initialization from an unbounded integer and rounding mode.
Policy Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | const char * | y, | |
Rounding_Dir | dir | |||
) | [inline] |
Direct initialization from a C string and rounding mode.
Definition at line 169 of file Checked_Number.inlines.hh.
References Parma_Polyhedra_Library::check_result(), Parma_Polyhedra_Library::rounding_dir(), and Parma_Polyhedra_Library::Checked_Number< T, Policy >::v.
00169 { 00170 std::istringstream s(x); 00171 Policy::handle_result(check_result(Checked::input<Policy>(v, 00172 s, 00173 rounding_dir(dir)), 00174 dir)); 00175 }
Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | const From & | , | |
Rounding_Dir | dir, | |||
typename Enable_If< Is_Special< From >::value, bool >::type | ignored = false | |||
) | [inline] |
Direct initialization from special and rounding mode.
Definition at line 191 of file Checked_Number.inlines.hh.
References Parma_Polyhedra_Library::check_result(), Parma_Polyhedra_Library::rounding_dir(), and Parma_Polyhedra_Library::Checked_Number< T, Policy >::v.
00191 { 00192 Policy::handle_result(check_result(Checked::assign_special<Policy>(v, 00193 From::code, 00194 rounding_dir(dir)), 00195 dir)); 00196 }
Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | const Checked_Number< From, From_Policy > & | y | ) | [inline, explicit] |
Direct initialization from a Checked_Number, default rounding mode.
Definition at line 114 of file Checked_Number.inlines.hh.
References Parma_Polyhedra_Library::check_result(), Parma_Polyhedra_Library::Checked_Number< T, Policy >::raw_value(), Parma_Polyhedra_Library::rounding_dir(), and Parma_Polyhedra_Library::Checked_Number< T, Policy >::v.
00114 { 00115 // TODO: avoid default construction of value member. 00116 Rounding_Dir dir = Policy::ROUND_DEFAULT_CONSTRUCTOR; 00117 Policy::handle_result(check_result(Checked::assign_ext<Policy, From_Policy> 00118 (v, 00119 y.raw_value(), 00120 rounding_dir(dir)), 00121 dir)); 00122 }
Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | signed char | y | ) |
Direct initialization from a signed char, default rounding mode.
Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | signed short | y | ) |
Direct initialization from a signed short, default rounding mode.
Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | signed int | y | ) |
Direct initialization from a signed int, default rounding mode.
Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | signed long | y | ) |
Direct initialization from a signed long, default rounding mode.
Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | signed long long | y | ) |
Direct initialization from a signed long long, default rounding mode.
Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | unsigned char | y | ) |
Direct initialization from an unsigned char, default rounding mode.
Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | unsigned short | y | ) |
Direct initialization from an unsigned short, default rounding mode.
Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | unsigned int | y | ) |
Direct initialization from an unsigned int, default rounding mode.
Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | unsigned long | y | ) |
Direct initialization from an unsigned long, default rounding mode.
Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | unsigned long long | y | ) |
Direct initialization from an unsigned long long, default rounding mode.
Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | float | y | ) |
Direct initialization from a float, default rounding mode.
Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | double | y | ) |
Direct initialization from a double, default rounding mode.
Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | long double | y | ) |
Direct initialization from a long double, default rounding mode.
Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | const mpq_class & | y | ) |
Direct initialization from a rational, default rounding mode.
Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | const mpz_class & | y | ) |
Direct initialization from an unbounded integer, default rounding mode.
Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | const char * | y | ) | [inline] |
Direct initialization from a C string, default rounding mode.
Definition at line 179 of file Checked_Number.inlines.hh.
References Parma_Polyhedra_Library::check_result(), Parma_Polyhedra_Library::rounding_dir(), and Parma_Polyhedra_Library::Checked_Number< T, Policy >::v.
00179 { 00180 std::istringstream s(x); 00181 Rounding_Dir dir = Policy::ROUND_DEFAULT_CONSTRUCTOR; 00182 Policy::handle_result(check_result(Checked::input<Policy>(v, 00183 s, 00184 rounding_dir(dir)), 00185 dir)); 00186 }
Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number | ( | const From & | , | |
typename Enable_If< Is_Special< From >::value, bool >::type | ignored = false | |||
) | [inline] |
Direct initialization from special, default rounding mode.
Definition at line 201 of file Checked_Number.inlines.hh.
References Parma_Polyhedra_Library::check_result(), Parma_Polyhedra_Library::rounding_dir(), and Parma_Polyhedra_Library::Checked_Number< T, Policy >::v.
00201 { 00202 Rounding_Dir dir = Policy::ROUND_DEFAULT_CONSTRUCTOR; 00203 Policy::handle_result(check_result(Checked::assign_special<Policy>(v, 00204 From::code, 00205 rounding_dir(dir)), 00206 dir)); 00207 }
Parma_Polyhedra_Library::Checked_Number< T, Policy >::operator T | ( | ) | const [inline] |
Conversion operator: returns a copy of the underlying numeric value.
Definition at line 265 of file Checked_Number.inlines.hh.
References Parma_Polyhedra_Library::Checked_Number< T, Policy >::v.
00265 { 00266 if (Policy::convertible) 00267 return v; 00268 }
T & Parma_Polyhedra_Library::Checked_Number< T, Policy >::raw_value | ( | ) | [inline] |
Returns a reference to the underlying numeric value.
Definition at line 272 of file Checked_Number.inlines.hh.
References Parma_Polyhedra_Library::Checked_Number< T, Policy >::v.
Referenced by Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number(), Parma_Polyhedra_Library::Checked_Number< T, Policy >::external_memory_in_bytes(), Parma_Polyhedra_Library::is_minus_infinity(), Parma_Polyhedra_Library::is_not_a_number(), Parma_Polyhedra_Library::is_plus_infinity(), Parma_Polyhedra_Library::Checked_Number< T, Policy >::operator=(), Parma_Polyhedra_Library::Checked_Number< T, Policy >::raw_value(), Parma_Polyhedra_Library::Native_Checked_To_Wrapper< Checked_Number< T, P > >::raw_value(), Parma_Polyhedra_Library::Native_Checked_From_Wrapper< Checked_Number< T, P > >::raw_value(), Parma_Polyhedra_Library::Checked_Number< T, Policy >::swap(), and Parma_Polyhedra_Library::Checked_Number< T, Policy >::total_memory_in_bytes().
00272 { 00273 return v; 00274 }
const T & Parma_Polyhedra_Library::Checked_Number< T, Policy >::raw_value | ( | ) | const [inline] |
Returns a const reference to the underlying numeric value.
Definition at line 278 of file Checked_Number.inlines.hh.
References Parma_Polyhedra_Library::Checked_Number< T, Policy >::v.
00278 { 00279 return v; 00280 }
bool Parma_Polyhedra_Library::Checked_Number< T, Policy >::OK | ( | ) | const [inline] |
Checks if all the invariants are satisfied.
Definition at line 298 of file Checked_Number.inlines.hh.
Result Parma_Polyhedra_Library::Checked_Number< T, Policy >::classify | ( | bool | nan = true , |
|
bool | inf = true , |
|||
bool | sign = true | |||
) | const [inline] |
Classifies *this.
Returns the appropriate Result characterizing:
*this
is NAN, if nan
is true
;*this
is a (positive or negative) infinity, if inf
is true
;*this
, if sign
is true
. Definition at line 304 of file Checked_Number.inlines.hh.
References Parma_Polyhedra_Library::Checked_Number< T, Policy >::v.
00304 { 00305 return Checked::classify<Policy>(v, nan, inf, sign); 00306 }
Checked_Number< T, Policy > & Parma_Polyhedra_Library::Checked_Number< T, Policy >::operator= | ( | const Checked_Number< T, Policy > & | y | ) | [inline] |
Assignment operator.
Definition at line 492 of file Checked_Number.inlines.hh.
References Parma_Polyhedra_Library::Checked_Number< T, Policy >::raw_value(), and Parma_Polyhedra_Library::Checked_Number< T, Policy >::v.
00492 { 00493 Checked::copy<Policy, Policy>(v, y.raw_value()); 00494 return *this; 00495 }
Checked_Number< T, Policy > & Parma_Polyhedra_Library::Checked_Number< T, Policy >::operator= | ( | const From & | y | ) | [inline] |
Assignment operator.
Definition at line 499 of file Checked_Number.inlines.hh.
References Parma_Polyhedra_Library::Checked_Number< T, Policy >::assign_r().
00499 { 00500 Policy::handle_result(assign_r(*this, y, Policy::ROUND_DEFAULT_OPERATOR)); 00501 return *this; 00502 }
Checked_Number& Parma_Polyhedra_Library::Checked_Number< T, Policy >::operator+= | ( | const Checked_Number< T, From_Policy > & | y | ) | [inline] |
Add and assign operator.
Checked_Number& Parma_Polyhedra_Library::Checked_Number< T, Policy >::operator+= | ( | const T & | y | ) |
Add and assign operator.
Enable_If<Is_Native_Or_Checked<From>::value, Checked_Number<T, Policy>&>::type Parma_Polyhedra_Library::Checked_Number< T, Policy >::operator+= | ( | const From & | y | ) | [inline] |
Add and assign operator.
Checked_Number& Parma_Polyhedra_Library::Checked_Number< T, Policy >::operator-= | ( | const Checked_Number< T, From_Policy > & | y | ) | [inline] |
Subtract and assign operator.
Checked_Number& Parma_Polyhedra_Library::Checked_Number< T, Policy >::operator-= | ( | const T & | y | ) |
Subtract and assign operator.
Enable_If<Is_Native_Or_Checked<From>::value, Checked_Number<T, Policy>&>::type Parma_Polyhedra_Library::Checked_Number< T, Policy >::operator-= | ( | const From & | y | ) | [inline] |
Subtract and assign operator.
Checked_Number& Parma_Polyhedra_Library::Checked_Number< T, Policy >::operator*= | ( | const Checked_Number< T, From_Policy > & | y | ) | [inline] |
Multiply and assign operator.
Checked_Number& Parma_Polyhedra_Library::Checked_Number< T, Policy >::operator*= | ( | const T & | y | ) |
Multiply and assign operator.
Enable_If<Is_Native_Or_Checked<From>::value, Checked_Number<T, Policy>&>::type Parma_Polyhedra_Library::Checked_Number< T, Policy >::operator*= | ( | const From & | y | ) | [inline] |
Multiply and assign operator.
Checked_Number& Parma_Polyhedra_Library::Checked_Number< T, Policy >::operator/= | ( | const Checked_Number< T, From_Policy > & | y | ) | [inline] |
Divide and assign operator.
Checked_Number& Parma_Polyhedra_Library::Checked_Number< T, Policy >::operator/= | ( | const T & | y | ) |
Divide and assign operator.
Enable_If<Is_Native_Or_Checked<From>::value, Checked_Number<T, Policy>&>::type Parma_Polyhedra_Library::Checked_Number< T, Policy >::operator/= | ( | const From & | y | ) | [inline] |
Divide and assign operator.
Checked_Number& Parma_Polyhedra_Library::Checked_Number< T, Policy >::operator%= | ( | const Checked_Number< T, From_Policy > & | y | ) | [inline] |
Compute remainder and assign operator.
Checked_Number& Parma_Polyhedra_Library::Checked_Number< T, Policy >::operator%= | ( | const T & | y | ) |
Compute remainder and assign operator.
Enable_If<Is_Native_Or_Checked<From>::value, Checked_Number<T, Policy>& >::type Parma_Polyhedra_Library::Checked_Number< T, Policy >::operator%= | ( | const From & | y | ) | [inline] |
Compute remainder and assign operator.
Checked_Number& Parma_Polyhedra_Library::Checked_Number< T, Policy >::operator++ | ( | ) |
Pre-increment operator.
Checked_Number Parma_Polyhedra_Library::Checked_Number< T, Policy >::operator++ | ( | int | ) |
Post-increment operator.
Checked_Number& Parma_Polyhedra_Library::Checked_Number< T, Policy >::operator-- | ( | ) |
Pre-decrement operator.
Checked_Number Parma_Polyhedra_Library::Checked_Number< T, Policy >::operator-- | ( | int | ) |
Post-decrement operator.
Enable_If< Is_Native_Or_Checked< T >::value, bool >::type is_not_a_number | ( | const T & | x | ) | [related] |
Definition at line 251 of file Checked_Number.inlines.hh.
00251 { 00252 return Checked::is_nan<typename Native_Checked_From_Wrapper<T> 00253 ::Policy>(Native_Checked_From_Wrapper<T>::raw_value(x)); 00254 }
Enable_If< Is_Native_Or_Checked< T >::value, bool >::type is_minus_infinity | ( | const T & | x | ) | [related] |
Definition at line 231 of file Checked_Number.inlines.hh.
Referenced by Parma_Polyhedra_Library::is_infinity().
00231 { 00232 return Checked::is_minf<typename Native_Checked_From_Wrapper<T> 00233 ::Policy>(Native_Checked_From_Wrapper<T>::raw_value(x)); 00234 }
Enable_If< Is_Native_Or_Checked< T >::value, bool >::type is_plus_infinity | ( | const T & | x | ) | [related] |
Definition at line 238 of file Checked_Number.inlines.hh.
Referenced by Parma_Polyhedra_Library::is_infinity().
00238 { 00239 return Checked::is_pinf<typename Native_Checked_From_Wrapper<T> 00240 ::Policy>(Native_Checked_From_Wrapper<T>::raw_value(x)); 00241 }
Enable_If< Is_Native_Or_Checked< T >::value, int >::type is_infinity | ( | const T & | x | ) | [related] |
Definition at line 245 of file Checked_Number.inlines.hh.
00245 { 00246 return is_minus_infinity(x) ? -1 : is_plus_infinity(x) ? 1 : 0; 00247 }
Enable_If< Is_Native_Or_Checked< T >::value, bool >::type is_integer | ( | const T & | x | ) | [related] |
Definition at line 258 of file Checked_Number.inlines.hh.
00258 { 00259 return Checked::is_int<typename Native_Checked_From_Wrapper<T> 00260 ::Policy>(Native_Checked_From_Wrapper<T>::raw_value(x)); 00261 }
Enable_If< Is_Native_Or_Checked< To >::value &&Is_Special< From >::value, Result >::type construct | ( | To & | to, | |
const From & | x, | |||
Rounding_Dir | dir | |||
) | [related] |
Definition at line 221 of file Checked_Number.inlines.hh.
00221 { 00222 return check_result(Checked::construct_special<typename Native_Checked_To_Wrapper<To> 00223 ::Policy>(Native_Checked_To_Wrapper<To>::raw_value(to), 00224 From::code, 00225 rounding_dir(dir)), 00226 dir); 00227 }
Enable_If< Is_Native_Or_Checked< To >::value &&Is_Special< From >::value, Result >::type assign_r | ( | To & | to, | |
const From & | x, | |||
Rounding_Dir | dir | |||
) | [related] |
Definition at line 211 of file Checked_Number.inlines.hh.
Referenced by Parma_Polyhedra_Library::Checked_Number< T, Policy >::operator=().
00211 { 00212 return check_result(Checked::assign_special<typename Native_Checked_To_Wrapper<To> 00213 ::Policy>(Native_Checked_To_Wrapper<To>::raw_value(to), 00214 From::code, 00215 rounding_dir(dir)), 00216 dir); 00217 }
Enable_If< Is_Native_Or_Checked< To >::value, Result >::type assign_r | ( | To & | to, | |
const char * | x, | |||
Rounding_Dir | dir | |||
) | [related] |
Definition at line 344 of file Checked_Number.inlines.hh.
References Parma_Polyhedra_Library::check_result(), Parma_Polyhedra_Library::raw_value(), and Parma_Polyhedra_Library::rounding_dir().
00344 { 00345 std::istringstream s(x); 00346 return check_result(Checked::input<typename Native_Checked_To_Wrapper<To> 00347 ::Policy>(Native_Checked_To_Wrapper<To>::raw_value(to), 00348 s, 00349 rounding_dir(dir)), 00350 dir); 00351 }
Enable_If< Is_Native_Or_Checked< To >::value, Result >::type assign_r | ( | To & | to, | |
char * | x, | |||
Rounding_Dir | dir | |||
) | [related] |
memory_size_type total_memory_in_bytes | ( | const Checked_Number< T, Policy > & | x | ) | [related] |
Returns the total size in bytes of the memory occupied by x
.
Definition at line 329 of file Checked_Number.inlines.hh.
References Parma_Polyhedra_Library::Checked_Number< T, Policy >::raw_value().
00329 { 00330 return total_memory_in_bytes(x.raw_value()); 00331 }
memory_size_type external_memory_in_bytes | ( | const Checked_Number< T, Policy > & | x | ) | [related] |
Returns the size in bytes of the memory managed by x
.
Definition at line 336 of file Checked_Number.inlines.hh.
References Parma_Polyhedra_Library::Checked_Number< T, Policy >::raw_value().
Referenced by Parma_Polyhedra_Library::external_memory_in_bytes(), and Parma_Polyhedra_Library::total_memory_in_bytes().
00336 { 00337 return external_memory_in_bytes(x.raw_value()); 00338 }
Checked_Number< T, Policy > operator+ | ( | const Checked_Number< T, Policy > & | x | ) | [related] |
Checked_Number< T, Policy > operator- | ( | const Checked_Number< T, Policy > & | x | ) | [related] |
Unary minus operator.
Definition at line 626 of file Checked_Number.inlines.hh.
00626 { 00627 Checked_Number<T, Policy> r; 00628 Policy::handle_result(neg_assign_r(r, x, Policy::ROUND_DEFAULT_OPERATOR)); 00629 return r; 00630 }
void floor_assign | ( | Checked_Number< T, Policy > & | x | ) | [related] |
Assigns to x
largest integral value not greater than x
.
void floor_assign | ( | Checked_Number< T, Policy > & | x, | |
const Checked_Number< T, Policy > & | y | |||
) | [related] |
Assigns to x
largest integral value not greater than y
.
void ceil_assign | ( | Checked_Number< T, Policy > & | x | ) | [related] |
Assigns to x
smallest integral value not less than x
.
void ceil_assign | ( | Checked_Number< T, Policy > & | x, | |
const Checked_Number< T, Policy > & | y | |||
) | [related] |
Assigns to x
smallest integral value not less than y
.
void trunc_assign | ( | Checked_Number< T, Policy > & | x | ) | [related] |
Round x
to the nearest integer not larger in absolute value.
void trunc_assign | ( | Checked_Number< T, Policy > & | x, | |
const Checked_Number< T, Policy > & | y | |||
) | [related] |
Assigns to x
the value of y
rounded to the nearest integer not larger in absolute value.
void neg_assign | ( | Checked_Number< T, Policy > & | x | ) | [related] |
Assigns to x
its negation.
void neg_assign | ( | Checked_Number< T, Policy > & | x, | |
const Checked_Number< T, Policy > & | y | |||
) | [related] |
Assigns to x
the negation of y
.
void abs_assign | ( | Checked_Number< T, Policy > & | x | ) | [related] |
Assigns to x
its absolute value.
void abs_assign | ( | Checked_Number< T, Policy > & | x, | |
const Checked_Number< T, Policy > & | y | |||
) | [related] |
Assigns to x
the absolute value of y
.
void add_mul_assign | ( | Checked_Number< T, Policy > & | x, | |
const Checked_Number< T, Policy > & | y, | |||
const Checked_Number< T, Policy > & | z | |||
) | [related] |
Assigns to x
the value x + y * z
.
void sub_mul_assign | ( | Checked_Number< T, Policy > & | x, | |
const Checked_Number< T, Policy > & | y, | |||
const Checked_Number< T, Policy > & | z | |||
) | [related] |
Assigns to x
the value x - y * z
.
void gcd_assign | ( | Checked_Number< T, Policy > & | x, | |
const Checked_Number< T, Policy > & | y, | |||
const Checked_Number< T, Policy > & | z | |||
) | [related] |
Assigns to x
the greatest common divisor of y
and z
.
void gcdext_assign | ( | Checked_Number< T, Policy > & | x, | |
Checked_Number< T, Policy > & | s, | |||
Checked_Number< T, Policy > & | t, | |||
const Checked_Number< T, Policy > & | y, | |||
const Checked_Number< T, Policy > & | z | |||
) | [related] |
Assigns to x
the greatest common divisor of y
and z
, setting s
and t
such that s*y + t*z = x = gcd(y, z).
void lcm_assign | ( | Checked_Number< T, Policy > & | x, | |
const Checked_Number< T, Policy > & | y, | |||
const Checked_Number< T, Policy > & | z | |||
) | [related] |
Assigns to x
the least common multiple of y
and z
.
void exact_div_assign | ( | Checked_Number< T, Policy > & | x, | |
const Checked_Number< T, Policy > & | y, | |||
const Checked_Number< T, Policy > & | z | |||
) | [related] |
If z
divides y
, assigns to x
the quotient of the integer division of y
and z
.
The behavior is undefined if z
does not divide y
.
Definition at line 700 of file Checked_Number.inlines.hh.
void sqrt_assign | ( | Checked_Number< T, Policy > & | x, | |
const Checked_Number< T, Policy > & | y | |||
) | [related] |
Assigns to x
the integer square root of y
.
Enable_If< Is_Native_Or_Checked< T1 >::value &&Is_Native_Or_Checked< T2 >::value &&(Is_Checked< T1 >::value||Is_Checked< T2 >::value), bool >::type operator== | ( | const T1 & | x, | |
const T2 & | y | |||
) | [related] |
Equality operator.
Definition at line 195 of file Interval.inlines.hh.
00195 { 00196 assert(f_OK(x)); 00197 assert(f_OK(y)); 00198 if (check_empty_arg(x)) 00199 return check_empty_arg(y); 00200 else if (check_empty_arg(y)) 00201 return false; 00202 return eq_restriction(f_info(x), f_info(y)) 00203 && eq(LOWER, f_lower(x), f_info(x), LOWER, f_lower(y), f_info(y)) 00204 && eq(UPPER, f_upper(x), f_info(x), UPPER, f_upper(y), f_info(y)); 00205 }
Enable_If< Is_Native_Or_Checked< T1 >::value &&Is_Native_Or_Checked< T2 >::value &&(Is_Checked< T1 >::value||Is_Checked< T2 >::value), bool >::type operator!= | ( | const T1 & | x, | |
const T2 & | y | |||
) | [related] |
Enable_If< Is_Native_Or_Checked< T1 >::value &&Is_Native_Or_Checked< T2 >::value &&(Is_Checked< T1 >::value||Is_Checked< T2 >::value), bool >::type operator>= | ( | const T1 & | x, | |
const T2 & | y | |||
) | [related] |
Greater than or equal to operator.
Enable_If< Is_Native_Or_Checked< T1 >::value &&Is_Native_Or_Checked< T2 >::value &&(Is_Checked< T1 >::value||Is_Checked< T2 >::value), bool >::type operator> | ( | const T1 & | x, | |
const T2 & | y | |||
) | [related] |
Greater than operator.
Enable_If< Is_Native_Or_Checked< T1 >::value &&Is_Native_Or_Checked< T2 >::value &&(Is_Checked< T1 >::value||Is_Checked< T2 >::value), bool >::type operator<= | ( | const T1 & | x, | |
const T2 & | y | |||
) | [related] |
Less than or equal to operator.
Enable_If< Is_Native_Or_Checked< T1 >::value &&Is_Native_Or_Checked< T2 >::value &&(Is_Checked< T1 >::value||Is_Checked< T2 >::value), bool >::type operator< | ( | const T1 & | x, | |
const T2 & | y | |||
) | [related] |
Less than operator.
Enable_If< Is_Native_Or_Checked< From >::value, int >::type sgn | ( | const From & | x | ) | [related] |
Returns ,
or
depending on whether the value of
x
is negative, zero or positive, respectively.
Definition at line 709 of file Checked_Number.inlines.hh.
References Parma_Polyhedra_Library::raw_value().
00709 { 00710 Result r = Checked::sgn_ext<typename Native_Checked_From_Wrapper<From>::Policy>(Native_Checked_From_Wrapper<From>::raw_value(x)); 00711 switch (r) { 00712 case V_LT: 00713 return -1; 00714 case V_EQ: 00715 return 0; 00716 case V_GT: 00717 return 1; 00718 default: 00719 throw(0); 00720 } 00721 }
Enable_If< Is_Native_Or_Checked< From1 >::value &&Is_Native_Or_Checked< From2 >::value, int >::type cmp | ( | const From1 & | x, | |
const From2 & | y | |||
) | [related] |
Returns a negative, zero or positive value depending on whether x
is lower than, equal to or greater than y
, respectively.
Definition at line 728 of file Checked_Number.inlines.hh.
References Parma_Polyhedra_Library::raw_value().
00728 { 00729 Result r 00730 = Checked::cmp_ext<typename Native_Checked_From_Wrapper<From1>::Policy, 00731 typename Native_Checked_From_Wrapper<From2>::Policy> 00732 (Native_Checked_From_Wrapper<From1>::raw_value(x), 00733 Native_Checked_From_Wrapper<From2>::raw_value(y)); 00734 switch (r) { 00735 case V_LT: 00736 return -1; 00737 case V_EQ: 00738 return 0; 00739 case V_GT: 00740 return 1; 00741 default: 00742 throw(0); 00743 } 00744 }
Enable_If< Is_Native_Or_Checked< T >::value, Result >::type output | ( | std::ostream & | os, | |
const T & | x, | |||
const Numeric_Format & | fmt, | |||
Rounding_Dir | dir | |||
) | [related] |
Definition at line 749 of file Checked_Number.inlines.hh.
References Parma_Polyhedra_Library::check_result(), Parma_Polyhedra_Library::raw_value(), and Parma_Polyhedra_Library::rounding_dir().
Referenced by Parma_Polyhedra_Library::Checked_Number< T, Policy >::operator<<().
00750 { 00751 return check_result(Checked::output_ext<typename Native_Checked_From_Wrapper<T>::Policy> 00752 (os, 00753 Native_Checked_From_Wrapper<T>::raw_value(x), 00754 fmt, 00755 rounding_dir(dir)), 00756 dir); 00757 }
std::ostream & operator<< | ( | std::ostream & | os, | |
const Checked_Number< T, Policy > & | x | |||
) | [related] |
Output operator.
Definition at line 762 of file Checked_Number.inlines.hh.
References Parma_Polyhedra_Library::Checked_Number< T, Policy >::output().
00762 { 00763 Policy::handle_result(output(os, x, Numeric_Format(), ROUND_IGNORE)); 00764 return os; 00765 }
Enable_If< Is_Native_Or_Checked< T >::value, Result >::type input | ( | T & | x, | |
std::istream & | is, | |||
Rounding_Dir | dir | |||
) | [related] |
Input function.
is | Input stream to read from; | |
x | Number (possibly extended) to assign to in case of successful reading; | |
dir | Rounding mode to be applied. |
is
, possibly rounding as specified by dir
, assigning the result to x
upon success, and returning the appropriate Result.The input syntax allows the specification of:
34976098
, -77
and +13
;15e2
and 15*^2
(both meaning 9200e-2
and -18*^+11111111111111111
;15/3
and 15/-3
;15/30e-1
(meaning 15*^-3/29e2
(meaning 71.3
(meaning -0.123456
(meaning 2.2e-1
(meaning -2.20001*^+3
(meaning 2^^11
(meaning 36^^z
(meaning 36^^xyz
(meaning 2^^11.1
(meaning 10^^2e3
(meaning 8^^2e3
(meaning 8^^2.1e3
(meaning 8^^20402543.120347e7
(meaning 8^^2.1
(meaning e
is interpreted as a digit, so that 16^^1e2
(meaning 16^^1*^2
(meaning 0x
is interpreted as the Mathematica-style prefix 16^^
;inf
and +inf
(meaning -inf
(meaning nan
(meaning "not a number").The rationale behind the accepted syntax can be summarized as follows:
Valid syntax is more formally and completely specified by the following grammar, with the additional provisos that everything is case insensitive, that the syntactic category BDIGIT
is further restricted by the current base and that for all bases above 14, any e
is always interpreted as a digit and never as a delimiter for the exponent part (if such a delimiter is desired, it has to be written as *^
).
number : NAN INF : 'inf' | SIGN INF ; | INF | num NAN : 'nan' | num DIV num ; ; SIGN : '-' num : unum | '+' | SIGN unum ; unum : unum1 EXP : 'e' | HEX unum1 | '*^' | base BASE unum1 ; ; POINT : '.' unum1 : mantissa ; | mantissa EXP exponent ; DIV : '/' ; mantissa: bdigits | POINT bdigits MINUS : '-' | bdigits POINT ; | bdigits POINT bdigits ; PLUS : '+' ; exponent: SIGN digits | digits HEX : '0x' ; ; bdigits : BDIGIT BASE : '^^' | bdigits BDIGIT ; ; DIGIT : '0' .. '9' digits : DIGIT ; | digits DIGIT ; BDIGIT : '0' .. '9' | 'a' .. 'z' ;
Definition at line 770 of file Checked_Number.inlines.hh.
References Parma_Polyhedra_Library::check_result(), Parma_Polyhedra_Library::raw_value(), and Parma_Polyhedra_Library::rounding_dir().
Referenced by Parma_Polyhedra_Library::Checked_Number< T, Policy >::operator>>().
00770 { 00771 return check_result(Checked::input_ext<typename Native_Checked_To_Wrapper<T>::Policy> 00772 (Native_Checked_To_Wrapper<T>::raw_value(x), 00773 is, 00774 rounding_dir(dir)), 00775 dir); 00776 }
std::istream & operator>> | ( | std::istream & | is, | |
Checked_Number< T, Policy > & | x | |||
) | [related] |
Input operator.
Definition at line 780 of file Checked_Number.inlines.hh.
References Parma_Polyhedra_Library::Checked_Number< T, Policy >::input().
00781 { 00782 Result r = input(x, is, Policy::ROUND_DEFAULT_INPUT); 00783 if (r == V_CVT_STR_UNK) 00784 is.setstate(std::ios::failbit); 00785 else 00786 Policy::handle_result(r); 00787 return is; 00788 }
void swap | ( | Checked_Number< T, Policy > & | x, | |
Checked_Number< T, Policy > & | y | |||
) | [related] |
Swaps x
with y
.
Definition at line 811 of file Checked_Number.inlines.hh.
References Parma_Polyhedra_Library::Checked_Number< T, Policy >::raw_value(), and Parma_Polyhedra_Library::swap().
const T & raw_value | ( | const Checked_Number< T, Policy > & | x | ) | [related] |
Definition at line 285 of file Checked_Number.inlines.hh.
References Parma_Polyhedra_Library::Checked_Number< T, Policy >::raw_value().
T & raw_value | ( | Checked_Number< T, Policy > & | x | ) | [related] |
Definition at line 292 of file Checked_Number.inlines.hh.
References Parma_Polyhedra_Library::Checked_Number< T, Policy >::raw_value().
T Parma_Polyhedra_Library::Checked_Number< T, Policy >::v [private] |
The underlying numeric value.
Definition at line 475 of file Checked_Number.defs.hh.
Referenced by Parma_Polyhedra_Library::Checked_Number< T, Policy >::Checked_Number(), Parma_Polyhedra_Library::Checked_Number< T, Policy >::classify(), Parma_Polyhedra_Library::Checked_Number< T, Policy >::operator T(), Parma_Polyhedra_Library::Checked_Number< T, Policy >::operator=(), and Parma_Polyhedra_Library::Checked_Number< T, Policy >::raw_value().