MCPcopy Create free account
hub / github.com/apache/arrow / ToDouble

Function ToDouble

cpp/src/gandiva/precompiled/decimal_ops.cc:517–526  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

515}
516
517double ToDouble(const BasicDecimalScalar128& in, bool* overflow) {
518 // convert int128 to double
519 int64_t sign = in.value().Sign();
520 auto value_abs = BasicDecimal128::Abs(in.value());
521 double unscaled = static_cast<double>(value_abs.low_bits()) +
522 std::ldexp(static_cast<double>(value_abs.high_bits()), 64);
523
524 // scale double.
525 return (unscaled * sign) / kDoubleScaleMultipliers[in.scale()];
526}
527
528BasicDecimal128 FromInt64(int64_t in, int32_t precision, int32_t scale, bool* overflow) {
529 // check if multiplying by scale will cause an overflow.

Callers 8

ToRealFunction · 0.85
float16.hFile · 0.85
ConsumeMethod · 0.85
ConsumeMethod · 0.85
ConsumeGenericMethod · 0.85
ConsumeMethod · 0.85
TEST_FFunction · 0.85
castFLOAT8_decimal128Function · 0.85

Calls 4

SignMethod · 0.80
AbsFunction · 0.50
valueMethod · 0.45
scaleMethod · 0.45

Tested by 1

TEST_FFunction · 0.68