15 #ifndef RAPIDJSON_IEEE754_
16 #define RAPIDJSON_IEEE754_
18 #include "../rapidjson.h"
39 bool Sign()
const {
return (
u_ & kSignMask) != 0; }
43 return static_cast<int>(((
u_ & kExponentMask) >> kSignificandSize) - kExponentBias);
48 bool IsNanOrInf()
const {
return (
u_ & kExponentMask) == kExponentMask; }
50 bool IsZero()
const {
return (
u_ & (kExponentMask | kSignificandMask)) == 0; }
66 else if(order <= -1074)
73 static const int kSignificandSize = 52;
74 static const int kExponentBias = 0x3FF;
75 static const int kDenormalExponent = 1 - kExponentBias;
uint64_t Uint64Value() const
Definition: ieee754.h:31
uint64_t IntegerSignificand() const
Definition: ieee754.h:52
Double(uint64_t u)
Definition: ieee754.h:28
bool IsNan() const
Definition: ieee754.h:46
double Value() const
Definition: ieee754.h:30
double NextPositiveDouble() const
Definition: ieee754.h:33
bool IsNormal() const
Definition: ieee754.h:49
bool IsNanOrInf() const
Definition: ieee754.h:48
bool IsZero() const
Definition: ieee754.h:50
int IntegerExponent() const
Definition: ieee754.h:56
Double()
Definition: ieee754.h:26
double d_
Definition: ieee754.h:83
static int EffectiveSignificandSize(int order)
Definition: ieee754.h:62
bool Sign() const
Definition: ieee754.h:39
uint64_t ToBias() const
Definition: ieee754.h:60
Double(double d)
Definition: ieee754.h:27
uint64_t u_
Definition: ieee754.h:84
uint64_t Significand() const
Definition: ieee754.h:40
int Exponent() const
Definition: ieee754.h:41
bool IsInf() const
Definition: ieee754.h:47
#define RAPIDJSON_ASSERT(x)
Assertion.
Definition: rapidjson.h:451
#define RAPIDJSON_NAMESPACE_BEGIN
provide custom rapidjson namespace (opening expression)
Definition: rapidjson.h:121
#define RAPIDJSON_NAMESPACE_END
provide custom rapidjson namespace (closing expression)
Definition: rapidjson.h:124
Definition: allocators.h:459
#define RAPIDJSON_UINT64_C2(high32, low32)
Construct a 64-bit literal by a pair of 32-bit integer.
Definition: rapidjson.h:326
unsigned __int64 uint64_t
Definition: stdint.h:136