PPL  0.12.1
Parma_Polyhedra_Library::float_ieee754_single Struct Reference

#include <Float.defs.hh>

List of all members.

Public Member Functions

int inf_sign () const
bool is_nan () const
int zero_sign () const
bool 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 = 0x80000000U
static const uint32_t EXP_MASK = 0x7f800000U
static const uint32_t POS_INF = 0x7f800000U
static const uint32_t NEG_INF = 0xff800000U
static const uint32_t POS_ZERO = 0x00000000U
static const uint32_t NEG_ZERO = 0x80000000U
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
static const Floating_Point_Format floating_point_format = IEEE754_SINGLE

Detailed Description

Definition at line 82 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 145 of file Float.inlines.hh.

References EXPONENT_BIAS, EXPONENT_BITS, MANTISSA_BITS, PPL_ASSERT, SGN_MASK, and word.

                                                                       {
  word = static_cast<uint32_t>(mpz_get_ui(mantissa)
                               & ((1UL << MANTISSA_BITS) - 1));
  if (negative)
    word |= SGN_MASK;
  int exponent_repr = exponent + EXPONENT_BIAS;
  PPL_ASSERT(exponent_repr >= 0 && exponent_repr < (1 << EXPONENT_BITS));
  word |= static_cast<uint32_t>(exponent_repr) << MANTISSA_BITS;
}

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

References word.

                          {
  --word;
}

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

References word.

                          {
  ++word;
}

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

References NEG_INF, POS_INF, and word.

                                     {
  if (word == NEG_INF)
    return -1;
  if (word == POS_INF)
    return 1;
  return 0;
}

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

References POS_INF, SGN_MASK, and word.

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

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

References SGN_MASK, and word.

                             {
  word ^= SGN_MASK;
}

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

References SGN_MASK, and word.

                                           {
  word = 0x7f7fffffU;
  if (negative)
    word |= SGN_MASK;
}

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

References SGN_MASK, and word.

                                     {
  return (word & SGN_MASK) != 0;
}

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

References NEG_ZERO, POS_ZERO, and word.

                                      {
  if (word == NEG_ZERO)
    return -1;
  if (word == POS_ZERO)
    return 1;
  return 0;
}

Member Data Documentation

const uint32_t Parma_Polyhedra_Library::float_ieee754_single::EXP_MASK = 0x7f800000U
static

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

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

Referenced by build().

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

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

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

const uint32_t Parma_Polyhedra_Library::float_ieee754_single::NEG_INF = 0xff800000U
static

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

Referenced by inf_sign().

const uint32_t Parma_Polyhedra_Library::float_ieee754_single::NEG_ZERO = 0x80000000U
static

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

Referenced by zero_sign().

const uint32_t Parma_Polyhedra_Library::float_ieee754_single::POS_INF = 0x7f800000U
static

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

Referenced by inf_sign(), and is_nan().

const uint32_t Parma_Polyhedra_Library::float_ieee754_single::POS_ZERO = 0x00000000U
static

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

Referenced by zero_sign().

const uint32_t Parma_Polyhedra_Library::float_ieee754_single::SGN_MASK = 0x80000000U
static

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

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


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