Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Static Protected Attributes | Friends | List of all members
ExactFloat Class Reference
+ Collaboration diagram for ExactFloat:

Classes

class  BigNum
 

Public Types

enum  RoundingMode {
  kRoundTiesToEven, kRoundTiesAwayFromZero, kRoundTowardZero, kRoundAwayFromZero,
  kRoundTowardPositive, kRoundTowardNegative
}
 

Public Member Functions

 ExactFloat (double v)
 
 ExactFloat (int v)
 
 ExactFloat (const char *s)
 
 ExactFloat (const ExactFloat &b)
 
int max_prec () const
 
int prec () const
 
int exp () const
 
void set_zero (int sign)
 
void set_inf (int sign)
 
void set_nan ()
 
bool is_zero () const
 
bool is_inf () const
 
bool is_nan () const
 
bool is_normal () const
 
bool is_finite () const
 
bool sign_bit () const
 
int sgn () const
 
double ToDouble () const
 
string ToString () const
 
string ToStringWithMaxDigits (int max_digits) const
 
string ToUniqueString () const
 
ExactFloat RoundToMaxPrec (int max_prec, RoundingMode mode) const
 
ExactFloatoperator= (const ExactFloat &b)
 
ExactFloat operator+ () const
 
ExactFloat operator- () const
 
ExactFloatoperator+= (const ExactFloat &b)
 
ExactFloatoperator-= (const ExactFloat &b)
 
ExactFloatoperator *= (const ExactFloat &b)
 

Static Public Member Functions

static ExactFloat SignedZero (int sign)
 
static ExactFloat Infinity (int sign)
 
static ExactFloat NaN ()
 
static int NumSignificantDigitsForPrec (int prec)
 

Static Public Attributes

static const int kMaxExp = 200*1000*1000
 
static const int kMinExp = -kMaxExp
 
static const int kMaxPrec = 64 << 20
 

Protected Member Functions

double ToDoubleHelper () const
 
ExactFloat RoundToPowerOf2 (int bit_exp, RoundingMode mode) const
 
int GetDecimalDigits (int max_digits, string *digits) const
 
void Canonicalize ()
 
int ScaleAndCompare (const ExactFloat &b) const
 
bool UnsignedLess (const ExactFloat &b) const
 
ExactFloat CopyWithSign (int sign) const
 
template<class T >
ToInteger (RoundingMode mode) const
 

Static Protected Member Functions

static ExactFloat SignedSum (int a_sign, const ExactFloat *a, int b_sign, const ExactFloat *b)
 
static ExactFloat Unimplemented ()
 

Protected Attributes

int32 sign_
 
int32 bn_exp_
 
BigNum bn_
 

Static Protected Attributes

static const int32 kExpNaN = INT_MAX
 
static const int32 kExpInfinity = INT_MAX - 1
 
static const int32 kExpZero = INT_MAX - 2
 
static const int kDoubleMantissaBits = 53
 

Friends

std::ostream & operator<< (std::ostream &o, ExactFloat const &f)
 
ExactFloat operator+ (const ExactFloat &a, const ExactFloat &b)
 
ExactFloat operator- (const ExactFloat &a, const ExactFloat &b)
 
ExactFloat operator * (const ExactFloat &a, const ExactFloat &b)
 
bool operator== (const ExactFloat &a, const ExactFloat &b)
 
bool operator< (const ExactFloat &a, const ExactFloat &b)
 
bool operator!= (const ExactFloat &a, const ExactFloat &b)
 
bool operator<= (const ExactFloat &a, const ExactFloat &b)
 
bool operator> (const ExactFloat &a, const ExactFloat &b)
 
bool operator>= (const ExactFloat &a, const ExactFloat &b)
 
ExactFloat fabs (const ExactFloat &a)
 
ExactFloat abs (const ExactFloat &a)
 
ExactFloat fmax (const ExactFloat &a, const ExactFloat &b)
 
ExactFloat fmin (const ExactFloat &a, const ExactFloat &b)
 
ExactFloat fdim (const ExactFloat &a, const ExactFloat &b)
 
ExactFloat ceil (const ExactFloat &a)
 
ExactFloat floor (const ExactFloat &a)
 
ExactFloat trunc (const ExactFloat &a)
 
ExactFloat round (const ExactFloat &a)
 
ExactFloat rint (const ExactFloat &a)
 
ExactFloat nearbyint (const ExactFloat &a)
 
long lrint (const ExactFloat &a)
 
long long llrint (const ExactFloat &a)
 
long lround (const ExactFloat &a)
 
long long llround (const ExactFloat &a)
 
ExactFloat fmod (const ExactFloat &a, const ExactFloat &b)
 
ExactFloat remainder (const ExactFloat &a, const ExactFloat &b)
 
ExactFloat drem (const ExactFloat &a, const ExactFloat &b)
 
ExactFloat modf (const ExactFloat &a, ExactFloat *i_ptr)
 
ExactFloat copysign (const ExactFloat &a, const ExactFloat &b)
 
ExactFloat frexp (const ExactFloat &a, int *exp)
 
ExactFloat ldexp (const ExactFloat &a, int exp)
 
ExactFloat scalbn (const ExactFloat &a, int exp)
 
ExactFloat scalbln (const ExactFloat &a, long exp)
 
int ilogb (const ExactFloat &a)
 
ExactFloat logb (const ExactFloat &a)
 

Detailed Description

Definition at line 125 of file exactfloat.h.


The documentation for this class was generated from the following files: