Parma_Polyhedra_Library::float_ieee754_single Struct Reference
[C++ Language Interface]

#include <Float.defs.hh>

List of all members.

Public Member Functions

int is_inf () const
int is_nan () const
int is_zero () const
int sign_bit () const
void negate ()
void dec ()
void inc ()
void set_max (bool negative)
void build (bool negative, mpz_t mantissa, int exponent)

Public Attributes

uint32_t word

Static Public Attributes

static const uint32_t SGN_MASK = 0x80000000
static const uint32_t EXP_MASK = 0x7f800000
static const uint32_t POS_INF = 0x7f800000
static const uint32_t NEG_INF = 0xff800000
static const uint32_t POS_ZERO = 0x00000000
static const uint32_t NEG_ZERO = 0x80000000
static const unsigned int BASE = 2
static const unsigned int EXPONENT_BITS = 8
static const unsigned int MANTISSA_BITS = 23
static const int EXPONENT_MAX = (1 << (EXPONENT_BITS - 1)) - 1
static const int EXPONENT_BIAS = EXPONENT_MAX
static const int EXPONENT_MIN = -EXPONENT_MAX + 1
static const int EXPONENT_MIN_DENORM

Detailed Description

Definition at line 77 of file Float.defs.hh.


Member Function Documentation

void Parma_Polyhedra_Library::float_ieee754_single::build ( bool  negative,
mpz_t  mantissa,
int  exponent 
) [inline]

Definition at line 140 of file Float.inlines.hh.

References EXPONENT_BIAS, MANTISSA_BITS, SGN_MASK, and word.

00140                                                                        {
00141   word = mpz_get_ui(mantissa) & ((1UL << MANTISSA_BITS) - 1);
00142   if (negative)
00143     word |= SGN_MASK;
00144   word |= static_cast<uint32_t>(exponent + EXPONENT_BIAS) << MANTISSA_BITS;
00145 }

void Parma_Polyhedra_Library::float_ieee754_single::dec (  )  [inline]

Definition at line 123 of file Float.inlines.hh.

References word.

00123                           {
00124   --word;
00125 }

void Parma_Polyhedra_Library::float_ieee754_single::inc (  )  [inline]

Definition at line 128 of file Float.inlines.hh.

References word.

00128                           {
00129   ++word;
00130 }

int Parma_Polyhedra_Library::float_ieee754_single::is_inf (  )  const [inline]

Definition at line 90 of file Float.inlines.hh.

References NEG_INF, POS_INF, and word.

00090                                    {
00091   if (word == NEG_INF)
00092     return -1;
00093   if (word == POS_INF)
00094     return 1;
00095   return 0;
00096 }

int Parma_Polyhedra_Library::float_ieee754_single::is_nan (  )  const [inline]

Definition at line 99 of file Float.inlines.hh.

References POS_INF, SGN_MASK, and word.

00099                                    {
00100   return (word & ~SGN_MASK) > POS_INF;
00101 }

int Parma_Polyhedra_Library::float_ieee754_single::is_zero (  )  const [inline]

Definition at line 104 of file Float.inlines.hh.

References NEG_ZERO, POS_ZERO, and word.

00104                                     {
00105   if (word == NEG_ZERO)
00106     return -1;
00107   if (word == POS_ZERO)
00108     return 1;
00109   return 0;
00110 }

void Parma_Polyhedra_Library::float_ieee754_single::negate (  )  [inline]

Definition at line 113 of file Float.inlines.hh.

References SGN_MASK, and word.

00113                              {
00114   word ^= SGN_MASK;
00115 }

void Parma_Polyhedra_Library::float_ieee754_single::set_max ( bool  negative  )  [inline]

Definition at line 133 of file Float.inlines.hh.

References SGN_MASK, and word.

00133                                            {
00134   word = 0x7f7fffff;
00135   if (negative)
00136     word |= SGN_MASK;
00137 }

int Parma_Polyhedra_Library::float_ieee754_single::sign_bit (  )  const [inline]

Definition at line 118 of file Float.inlines.hh.

References SGN_MASK, and word.

00118                                      {
00119   return !!(word & SGN_MASK);
00120 }


Member Data Documentation

const unsigned int Parma_Polyhedra_Library::float_ieee754_single::BASE = 2 [static]

Definition at line 85 of file Float.defs.hh.

const uint32_t Parma_Polyhedra_Library::float_ieee754_single::EXP_MASK = 0x7f800000 [static]

Definition at line 80 of file Float.defs.hh.

Definition at line 89 of file Float.defs.hh.

Referenced by build().

Definition at line 86 of file Float.defs.hh.

Definition at line 88 of file Float.defs.hh.

Definition at line 90 of file Float.defs.hh.

Initial value:
 EXPONENT_MIN
                                        - static_cast<int>(MANTISSA_BITS)

Definition at line 91 of file Float.defs.hh.

Definition at line 87 of file Float.defs.hh.

Referenced by build().

const uint32_t Parma_Polyhedra_Library::float_ieee754_single::NEG_INF = 0xff800000 [static]

Definition at line 82 of file Float.defs.hh.

Referenced by is_inf().

const uint32_t Parma_Polyhedra_Library::float_ieee754_single::NEG_ZERO = 0x80000000 [static]

Definition at line 84 of file Float.defs.hh.

Referenced by is_zero().

const uint32_t Parma_Polyhedra_Library::float_ieee754_single::POS_INF = 0x7f800000 [static]

Definition at line 81 of file Float.defs.hh.

Referenced by is_inf(), and is_nan().

const uint32_t Parma_Polyhedra_Library::float_ieee754_single::POS_ZERO = 0x00000000 [static]

Definition at line 83 of file Float.defs.hh.

Referenced by is_zero().

const uint32_t Parma_Polyhedra_Library::float_ieee754_single::SGN_MASK = 0x80000000 [static]

Definition at line 79 of file Float.defs.hh.

Referenced by build(), is_nan(), negate(), set_max(), and sign_bit().

Definition at line 78 of file Float.defs.hh.

Referenced by build(), dec(), inc(), is_inf(), is_nan(), is_zero(), negate(), set_max(), and sign_bit().


The documentation for this struct was generated from the following files:
Generated on Sun Feb 27 16:20:19 2011 for PPL by  doxygen 1.6.3