64 class scfx_ieee_double;
66 class scfx_ieee_float;
68 #define SCFX_MASK_(Size) \
84 #if defined( SC_BIG_ENDIAN )
87 unsigned mantissa0:20;
88 unsigned mantissa1:32;
89 #elif defined( SC_LITTLE_ENDIAN )
90 unsigned mantissa1:32;
91 unsigned mantissa0:20;
132 operator double()
const;
200 scfx_ieee_double::operator double()
const
210 return m_id.
s.negative;
239 return m_id.
s.mantissa0;
253 return m_id.
s.mantissa1;
260 m_id.
s.mantissa1 = a;
324 #define MSB_STATEMENT(x,n) if( x >> n ) { x >>= n; i += n; }
360 #define LSB_STATEMENT(x,n) if( x << n ) { x <<= n; i -= n; }
429 #if defined( SC_BIG_ENDIAN )
432 unsigned mantissa:23;
433 #elif defined( SC_LITTLE_ENDIAN )
434 unsigned mantissa:23;
472 operator float()
const;
532 scfx_ieee_float::operator float()
const
542 return m_if.
s.negative;
571 return m_if.
s.mantissa;
651 if( ( exp += 20 ) >= 0 )
655 else if( ( exp += 32 ) >= 0 )
684 #if defined( _MSC_VER ) || defined( __clang__ )
686 double tmp =
static_cast<double>(
static_cast<int64>( a ) );
689 return static_cast<double>( a );
const int SCFX_IEEE_FLOAT_E_MAX
unsigned int mantissa() const
unsigned int mantissa0() const
const unsigned int SCFX_IEEE_DOUBLE_M_SIZE
bool is_subnormal() const
const unsigned int SCFX_IEEE_DOUBLE_E_SIZE
const unsigned int SCFX_IEEE_DOUBLE_BIAS
scfx_ieee_float & operator=(float)
struct sc_dt::ieee_float::@2 s
const unsigned int SCFX_IEEE_DOUBLE_M0_SIZE
const unsigned int SCFX_IEEE_DOUBLE_M1_SIZE
unsigned int mantissa1() const
#define MSB_STATEMENT(x, n)
scfx_ieee_double & operator=(double)
const unsigned int SCFX_IEEE_FLOAT_M_SIZE
unsigned int negative() const
struct sc_dt::ieee_double::@1 s
const int SCFX_IEEE_DOUBLE_E_MAX
const unsigned int SCFX_IEEE_FLOAT_E_SIZE
double scfx_pow2(int exp)
static const scfx_ieee_double nan()
double uint64_to_double(uint64 a)
const int SCFX_IEEE_FLOAT_E_MIN
bool is_subnormal() const
#define LSB_STATEMENT(x, n)
static const scfx_ieee_double inf(int)
unsigned int negative() const
const int SCFX_IEEE_DOUBLE_E_MIN
const unsigned int SCFX_IEEE_FLOAT_BIAS