#include <extended.hpp>
Definition at line 25 of file extended.hpp.
typedef NT_ NT |
Definition at line 29 of file extended.hpp.
Definition at line 31 of file extended.hpp.
Definition at line 30 of file extended.hpp.
extended | ( | ) | [inline] |
Definition at line 35 of file extended.hpp.
Definition at line 46 of file extended.hpp.
Definition at line 63 of file extended.hpp.
References extended< NT_ >::a, extended< NT_ >::b, extended< NT_ >::c, extended_check, and extended< NT_ >::signof().
Referenced by mmx::compare(), mmx::operator<(), mmx::operator<=(), mmx::operator>(), and mmx::operator>=().
00064 { 00065 extended_check(lhs, rhs); 00066 Self delta = lhs - rhs; 00067 // equal 00068 if (delta.a == 0 && delta.b == 0) return 0; 00069 // simple 00070 if (delta.a == 0) return signof(delta.b); 00071 if (delta.b == 0) return signof(delta.a); 00072 // less 00073 if (delta.a < 0 && delta.b < 0) return -1; 00074 // greater 00075 if (delta.a > 0 && delta.b > 0) return 1; 00076 // less or greater, but mixed signs 00077 T aa = delta.a * delta.a; 00078 T bbc = delta.b * delta.b * delta.c; 00079 if (aa > bbc) 00080 return signof(delta.a); 00081 else 00082 return signof(delta.b); 00083 return 0; 00084 }
static int signof | ( | const T & | x | ) | [inline, static] |
Definition at line 53 of file extended.hpp.
Referenced by extended< NT_ >::compare().
Definition at line 33 of file extended.hpp.
Referenced by mmx::bit_size(), extended< NT_ >::compare(), mmx::operator*(), mmx::operator+(), mmx::operator-(), mmx::operator/(), mmx::operator<<(), mmx::operator<<=(), mmx::operator==(), and mmx::print().
Definition at line 33 of file extended.hpp.
Referenced by mmx::bit_size(), extended< NT_ >::compare(), mmx::operator*(), mmx::operator+(), mmx::operator-(), mmx::operator/(), mmx::operator<<(), mmx::operator==(), and mmx::print().
Definition at line 33 of file extended.hpp.
Referenced by extended< NT_ >::compare(), mmx::operator*(), mmx::operator-(), mmx::operator/(), and mmx::print().