A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from http://www.ncbi.nlm.nih.gov/IEB/ToolBox/CPP_DOC/doxyhtml/strtod_8h_source.html below:

NCBI C++ ToolKit: include/misc/jsonwrapp/rapidjson11/internal/strtod.h Source File

15 #ifndef RAPIDJSON_STRTOD_ 16 #define RAPIDJSON_STRTOD_ 26 inline double FastPath

(

double

significand,

int

exp) {

46 template

<

typename

T>

58  const int

hExp = bExp - 1;

60  int

dS_Exp2 = 0, dS_Exp5 = 0, bS_Exp2 = 0, bS_Exp5 = 0, hS_Exp2 = 0, hS_Exp5 = 0;

91  int

common_Exp2 =

Min3

(dS_Exp2, bS_Exp2, hS_Exp2);

92

dS_Exp2 -= common_Exp2;

93

bS_Exp2 -= common_Exp2;

94

hS_Exp2 -= common_Exp2;

97

dS.

MultiplyPow5

(

static_cast<unsigned>

(dS_Exp5)) <<=

static_cast<unsigned>

(dS_Exp2);

100

bS.

MultiplyPow5

(

static_cast<unsigned>

(bS_Exp5)) <<=

static_cast<unsigned>

(bS_Exp2);

103

hS.

MultiplyPow5

(

static_cast<unsigned>

(hS_Exp5)) <<=

static_cast<unsigned>

(hS_Exp2);

108  return delta

.Compare(hS);

114  if

(p > 22 && p < 22 + 16) {

120  if

(p >= -22 && p <= 22 && d <= 9007199254740991.0) {

129 inline bool StrtodDiyFp

(

const char

* decimals,

size_t

length,

size_t

decimalPosition,

int

exp,

double

*

result

) {

132  for

(;

i

< length;

i

++) {

136

significand = significand * 10u +

static_cast<unsigned>

(decimals[

i

] -

'0'

);

139  if

(

i

< length && decimals[

i

] >=

'5'

)

142  size_t

remaining = length -

i

;

143  const int

kUlpShift = 3;

144  const int

kUlp = 1 << kUlpShift;

147  DiyFp

v(significand, 0);

151  const int

dExp =

static_cast<int>

(decimalPosition) -

static_cast<int>

(

i

) + exp;

155  if

(actualExp != dExp) {

156  static const DiyFp

kPow10[] = {

165  int

adjustment = dExp - actualExp - 1;

167

v = v * kPow10[adjustment];

168  if

(length +

static_cast<unsigned>

(adjustment)> 19u)

176  const int

oldExp = v.

e

;

180  const int

effectiveSignificandSize = Double::EffectiveSignificandSize(64 + v.

e

);

181  int

precisionSize = 64 - effectiveSignificandSize;

182  if

(precisionSize + kUlpShift >= 64) {

183  int

scaleExp = (precisionSize + kUlpShift) - 63;

187

precisionSize -= scaleExp;

190  DiyFp

rounded(v.

f

>> precisionSize, v.

e

+ precisionSize);

191  const uint64_t

precisionBits = (v.

f

& ((

uint64_t

(1) << precisionSize) - 1)) * kUlp;

193  if

(precisionBits >= halfWay +

static_cast<unsigned>

(

error

)) {

195  if

(rounded.

f

& (DiyFp::kDpHiddenBit << 1)) {

203  return

halfWay -

static_cast<unsigned>

(

error

) >= precisionBits || precisionBits >= halfWay +

static_cast<unsigned>

(

error

);

206 inline double StrtodBigInteger

(

double approx

,

const char

* decimals,

size_t

length,

size_t

decimalPosition,

int

exp) {

208  const int

dExp =

static_cast<int>

(decimalPosition) -

static_cast<int>

(length) + exp;

213  else if

(

cmp

== 0) {

215  if

(

a

.Significand() & 1)

216  return a

.NextPositiveDouble();

221  return a

.NextPositiveDouble();

224 inline double StrtodFullPrecision

(

double

d,

int

p,

const char

* decimals,

size_t

length,

size_t

decimalPosition,

int

exp) {

233  while

(*decimals ==

'0'

&& length > 1) {

240  while

(decimals[length - 1] ==

'0'

&& length > 1) {

247  const int

kMaxDecimalDigit = 780;

248  if

(

static_cast<int>

(length) > kMaxDecimalDigit) {

249  int delta

= (

static_cast<int>

(length) - kMaxDecimalDigit);

251

decimalPosition -=

static_cast<unsigned>

(

delta

);

252

length = kMaxDecimalDigit;

256  if

(

int

(length) + exp < -324)

bool Difference(const BigInteger &rhs, BigInteger *out) const

BigInteger & MultiplyPow5(unsigned exp)

int IntegerExponent() const

uint64_t IntegerSignificand() const

#define RAPIDJSON_ASSERT(x)

Assertion.

#define RAPIDJSON_NAMESPACE_BEGIN

provide custom rapidjson namespace (opening expression)

#define RAPIDJSON_NAMESPACE_END

provide custom rapidjson namespace (closing expression)

double StrtodNormalPrecision(double d, int p)

int CheckWithinHalfULP(double b, const BigInteger &d, int dExp)

DiyFp GetCachedPower10(int exp, int *outExp)

double StrtodBigInteger(double approx, const char *decimals, size_t length, size_t decimalPosition, int exp)

bool StrtodDiyFp(const char *decimals, size_t length, size_t decimalPosition, int exp, double *result)

double FastPath(double significand, int exp)

double Pow10(int n)

Computes integer powers of 10 in double (10.0^n).

bool StrtodFast(double d, int p, double *result)

double StrtodFullPrecision(double d, int p, const char *decimals, size_t length, size_t decimalPosition, int exp)

bool approx(T x_, T y_, T eps_)

Int4 delta(size_t dimension_, const Int4 *score_)

#define RAPIDJSON_UINT64_C2(high32, low32)

Construct a 64-bit literal by a pair of 32-bit integer.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4