gecko-dev/mfbt/double-conversion/ToPrecision-exponential.patch

63 строки
2.9 KiB
Diff
Исходник Обычный вид История

Bug 1402344 - Update mfbt-double-conversion to the latest upstream rev. r=froydnj --HG-- rename : mfbt/double-conversion/source/LICENSE => mfbt/double-conversion/double-conversion/LICENSE rename : mfbt/double-conversion/source/README.md => mfbt/double-conversion/double-conversion/README.md rename : mfbt/double-conversion/source/bignum-dtoa.cc => mfbt/double-conversion/double-conversion/bignum-dtoa.cc rename : mfbt/double-conversion/source/bignum-dtoa.h => mfbt/double-conversion/double-conversion/bignum-dtoa.h rename : mfbt/double-conversion/source/bignum.cc => mfbt/double-conversion/double-conversion/bignum.cc rename : mfbt/double-conversion/source/bignum.h => mfbt/double-conversion/double-conversion/bignum.h rename : mfbt/double-conversion/source/cached-powers.cc => mfbt/double-conversion/double-conversion/cached-powers.cc rename : mfbt/double-conversion/source/cached-powers.h => mfbt/double-conversion/double-conversion/cached-powers.h rename : mfbt/double-conversion/source/diy-fp.cc => mfbt/double-conversion/double-conversion/diy-fp.cc rename : mfbt/double-conversion/source/diy-fp.h => mfbt/double-conversion/double-conversion/diy-fp.h rename : mfbt/double-conversion/source/double-conversion.cc => mfbt/double-conversion/double-conversion/double-conversion.cc rename : mfbt/double-conversion/source/double-conversion.h => mfbt/double-conversion/double-conversion/double-conversion.h rename : mfbt/double-conversion/source/fast-dtoa.cc => mfbt/double-conversion/double-conversion/fast-dtoa.cc rename : mfbt/double-conversion/source/fast-dtoa.h => mfbt/double-conversion/double-conversion/fast-dtoa.h rename : mfbt/double-conversion/source/fixed-dtoa.cc => mfbt/double-conversion/double-conversion/fixed-dtoa.cc rename : mfbt/double-conversion/source/fixed-dtoa.h => mfbt/double-conversion/double-conversion/fixed-dtoa.h rename : mfbt/double-conversion/source/ieee.h => mfbt/double-conversion/double-conversion/ieee.h rename : mfbt/double-conversion/source/strtod.cc => mfbt/double-conversion/double-conversion/strtod.cc rename : mfbt/double-conversion/source/strtod.h => mfbt/double-conversion/double-conversion/strtod.h rename : mfbt/double-conversion/source/utils.h => mfbt/double-conversion/double-conversion/utils.h extra : rebase_source : 2d03850dcd1db749f0debecffec2e870acd1b958
2017-10-10 08:15:37 +03:00
diff --git a/mfbt/double-conversion/double-conversion/double-conversion.cc b/mfbt/double-conversion/double-conversion/double-conversion.cc
--- a/mfbt/double-conversion/double-conversion/double-conversion.cc
+++ b/mfbt/double-conversion/double-conversion/double-conversion.cc
@@ -279,17 +279,19 @@ bool DoubleToStringConverter::ToExponent
exponent,
result_builder);
return true;
}
bool DoubleToStringConverter::ToPrecision(double value,
int precision,
+ bool* used_exponential_notation,
StringBuilder* result_builder) const {
+ *used_exponential_notation = false;
if (Double(value).IsSpecial()) {
return HandleSpecialValues(value, result_builder);
}
Bug 1402344 - Update mfbt-double-conversion to the latest upstream rev. r=froydnj --HG-- rename : mfbt/double-conversion/source/LICENSE => mfbt/double-conversion/double-conversion/LICENSE rename : mfbt/double-conversion/source/README.md => mfbt/double-conversion/double-conversion/README.md rename : mfbt/double-conversion/source/bignum-dtoa.cc => mfbt/double-conversion/double-conversion/bignum-dtoa.cc rename : mfbt/double-conversion/source/bignum-dtoa.h => mfbt/double-conversion/double-conversion/bignum-dtoa.h rename : mfbt/double-conversion/source/bignum.cc => mfbt/double-conversion/double-conversion/bignum.cc rename : mfbt/double-conversion/source/bignum.h => mfbt/double-conversion/double-conversion/bignum.h rename : mfbt/double-conversion/source/cached-powers.cc => mfbt/double-conversion/double-conversion/cached-powers.cc rename : mfbt/double-conversion/source/cached-powers.h => mfbt/double-conversion/double-conversion/cached-powers.h rename : mfbt/double-conversion/source/diy-fp.cc => mfbt/double-conversion/double-conversion/diy-fp.cc rename : mfbt/double-conversion/source/diy-fp.h => mfbt/double-conversion/double-conversion/diy-fp.h rename : mfbt/double-conversion/source/double-conversion.cc => mfbt/double-conversion/double-conversion/double-conversion.cc rename : mfbt/double-conversion/source/double-conversion.h => mfbt/double-conversion/double-conversion/double-conversion.h rename : mfbt/double-conversion/source/fast-dtoa.cc => mfbt/double-conversion/double-conversion/fast-dtoa.cc rename : mfbt/double-conversion/source/fast-dtoa.h => mfbt/double-conversion/double-conversion/fast-dtoa.h rename : mfbt/double-conversion/source/fixed-dtoa.cc => mfbt/double-conversion/double-conversion/fixed-dtoa.cc rename : mfbt/double-conversion/source/fixed-dtoa.h => mfbt/double-conversion/double-conversion/fixed-dtoa.h rename : mfbt/double-conversion/source/ieee.h => mfbt/double-conversion/double-conversion/ieee.h rename : mfbt/double-conversion/source/strtod.cc => mfbt/double-conversion/double-conversion/strtod.cc rename : mfbt/double-conversion/source/strtod.h => mfbt/double-conversion/double-conversion/strtod.h rename : mfbt/double-conversion/source/utils.h => mfbt/double-conversion/double-conversion/utils.h extra : rebase_source : 2d03850dcd1db749f0debecffec2e870acd1b958
2017-10-10 08:15:37 +03:00
if (precision < kMinPrecisionDigits || precision > kMaxPrecisionDigits) {
return false;
}
@@ -321,16 +323,17 @@ bool DoubleToStringConverter::ToPrecisio
max_trailing_padding_zeroes_in_precision_mode_)) {
// Fill buffer to contain 'precision' digits.
// Usually the buffer is already at the correct length, but 'DoubleToAscii'
// is allowed to return less characters.
for (int i = decimal_rep_length; i < precision; ++i) {
decimal_rep[i] = '0';
}
+ *used_exponential_notation = true;
CreateExponentialRepresentation(decimal_rep,
precision,
exponent,
Bug 1402344 - Update mfbt-double-conversion to the latest upstream rev. r=froydnj --HG-- rename : mfbt/double-conversion/source/LICENSE => mfbt/double-conversion/double-conversion/LICENSE rename : mfbt/double-conversion/source/README.md => mfbt/double-conversion/double-conversion/README.md rename : mfbt/double-conversion/source/bignum-dtoa.cc => mfbt/double-conversion/double-conversion/bignum-dtoa.cc rename : mfbt/double-conversion/source/bignum-dtoa.h => mfbt/double-conversion/double-conversion/bignum-dtoa.h rename : mfbt/double-conversion/source/bignum.cc => mfbt/double-conversion/double-conversion/bignum.cc rename : mfbt/double-conversion/source/bignum.h => mfbt/double-conversion/double-conversion/bignum.h rename : mfbt/double-conversion/source/cached-powers.cc => mfbt/double-conversion/double-conversion/cached-powers.cc rename : mfbt/double-conversion/source/cached-powers.h => mfbt/double-conversion/double-conversion/cached-powers.h rename : mfbt/double-conversion/source/diy-fp.cc => mfbt/double-conversion/double-conversion/diy-fp.cc rename : mfbt/double-conversion/source/diy-fp.h => mfbt/double-conversion/double-conversion/diy-fp.h rename : mfbt/double-conversion/source/double-conversion.cc => mfbt/double-conversion/double-conversion/double-conversion.cc rename : mfbt/double-conversion/source/double-conversion.h => mfbt/double-conversion/double-conversion/double-conversion.h rename : mfbt/double-conversion/source/fast-dtoa.cc => mfbt/double-conversion/double-conversion/fast-dtoa.cc rename : mfbt/double-conversion/source/fast-dtoa.h => mfbt/double-conversion/double-conversion/fast-dtoa.h rename : mfbt/double-conversion/source/fixed-dtoa.cc => mfbt/double-conversion/double-conversion/fixed-dtoa.cc rename : mfbt/double-conversion/source/fixed-dtoa.h => mfbt/double-conversion/double-conversion/fixed-dtoa.h rename : mfbt/double-conversion/source/ieee.h => mfbt/double-conversion/double-conversion/ieee.h rename : mfbt/double-conversion/source/strtod.cc => mfbt/double-conversion/double-conversion/strtod.cc rename : mfbt/double-conversion/source/strtod.h => mfbt/double-conversion/double-conversion/strtod.h rename : mfbt/double-conversion/source/utils.h => mfbt/double-conversion/double-conversion/utils.h extra : rebase_source : 2d03850dcd1db749f0debecffec2e870acd1b958
2017-10-10 08:15:37 +03:00
result_builder);
} else {
CreateDecimalRepresentation(decimal_rep, decimal_rep_length, decimal_point,
Max(0, precision - decimal_point),
result_builder);
diff --git a/mfbt/double-conversion/double-conversion/double-conversion.h b/mfbt/double-conversion/double-conversion/double-conversion.h
--- a/mfbt/double-conversion/double-conversion/double-conversion.h
+++ b/mfbt/double-conversion/double-conversion/double-conversion.h
@@ -265,16 +265,17 @@ class DoubleToStringConverter {
// been provided to the constructor,
// - precision < kMinPericisionDigits
// - precision > kMaxPrecisionDigits
// The last condition implies that the result will never contain more than
// kMaxPrecisionDigits + 7 characters (the sign, the decimal point, the
// exponent character, the exponent's sign, and at most 3 exponent digits).
MFBT_API bool ToPrecision(double value,
int precision,
+ bool* used_exponential_notation,
StringBuilder* result_builder) const;
enum DtoaMode {
Bug 1402344 - Update mfbt-double-conversion to the latest upstream rev. r=froydnj --HG-- rename : mfbt/double-conversion/source/LICENSE => mfbt/double-conversion/double-conversion/LICENSE rename : mfbt/double-conversion/source/README.md => mfbt/double-conversion/double-conversion/README.md rename : mfbt/double-conversion/source/bignum-dtoa.cc => mfbt/double-conversion/double-conversion/bignum-dtoa.cc rename : mfbt/double-conversion/source/bignum-dtoa.h => mfbt/double-conversion/double-conversion/bignum-dtoa.h rename : mfbt/double-conversion/source/bignum.cc => mfbt/double-conversion/double-conversion/bignum.cc rename : mfbt/double-conversion/source/bignum.h => mfbt/double-conversion/double-conversion/bignum.h rename : mfbt/double-conversion/source/cached-powers.cc => mfbt/double-conversion/double-conversion/cached-powers.cc rename : mfbt/double-conversion/source/cached-powers.h => mfbt/double-conversion/double-conversion/cached-powers.h rename : mfbt/double-conversion/source/diy-fp.cc => mfbt/double-conversion/double-conversion/diy-fp.cc rename : mfbt/double-conversion/source/diy-fp.h => mfbt/double-conversion/double-conversion/diy-fp.h rename : mfbt/double-conversion/source/double-conversion.cc => mfbt/double-conversion/double-conversion/double-conversion.cc rename : mfbt/double-conversion/source/double-conversion.h => mfbt/double-conversion/double-conversion/double-conversion.h rename : mfbt/double-conversion/source/fast-dtoa.cc => mfbt/double-conversion/double-conversion/fast-dtoa.cc rename : mfbt/double-conversion/source/fast-dtoa.h => mfbt/double-conversion/double-conversion/fast-dtoa.h rename : mfbt/double-conversion/source/fixed-dtoa.cc => mfbt/double-conversion/double-conversion/fixed-dtoa.cc rename : mfbt/double-conversion/source/fixed-dtoa.h => mfbt/double-conversion/double-conversion/fixed-dtoa.h rename : mfbt/double-conversion/source/ieee.h => mfbt/double-conversion/double-conversion/ieee.h rename : mfbt/double-conversion/source/strtod.cc => mfbt/double-conversion/double-conversion/strtod.cc rename : mfbt/double-conversion/source/strtod.h => mfbt/double-conversion/double-conversion/strtod.h rename : mfbt/double-conversion/source/utils.h => mfbt/double-conversion/double-conversion/utils.h extra : rebase_source : 2d03850dcd1db749f0debecffec2e870acd1b958
2017-10-10 08:15:37 +03:00
// Produce the shortest correct representation.
// For example the output of 0.299999999999999988897 is (the less accurate
// but correct) 0.3.
SHORTEST,
// Same as SHORTEST, but for single-precision floats.