extended< NT_ > Struct Template Reference

#include <extended.hpp>

List of all members.

Public Types

Public Member Functions

Static Public Member Functions

Public Attributes


Detailed Description

template<class NT_>
struct mmx::extended< NT_ >

Definition at line 25 of file extended.hpp.


Member Typedef Documentation

typedef NT_ NT

Definition at line 29 of file extended.hpp.

typedef extended<NT> Self

Definition at line 31 of file extended.hpp.

typedef scalar<NT> T

Definition at line 30 of file extended.hpp.


Constructor & Destructor Documentation

extended (  )  [inline]

Definition at line 35 of file extended.hpp.

00036     {
00037     }

extended ( const T a_  )  [inline]

Definition at line 39 of file extended.hpp.

00040         : a(a_),
00041           b(T(0)),
00042           c(T(0))
00043     {
00044     }

extended ( const T a_,
const T b_,
const T c_ 
) [inline]

Definition at line 46 of file extended.hpp.

00047         : a(a_),
00048           b(b_),
00049           c(c_)
00050     {
00051     }


Member Function Documentation

static int compare ( const Self lhs,
const Self rhs 
) [inline, static]

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().

00054     {
00055         if (x > 0)
00056             return 1;
00057         else if (x < 0)
00058             return -1;
00059         else
00060             return 0;
00061     }


Member Data Documentation

T a
T b
T c

The documentation for this struct was generated from the following file:

Generated on 6 Dec 2012 for realroot by  doxygen 1.6.1