From 0436d2e5135df32f24627f1c291c1d5113ba147b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 21 Aug 2021 02:14:59 +0200 Subject: [PATCH] abacus: bignum: factorize trim of leading zeros --- src/bignum/bignum.cc | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/bignum/bignum.cc b/src/bignum/bignum.cc index a8ff26c..29efd8f 100644 --- a/src/bignum/bignum.cc +++ b/src/bignum/bignum.cc @@ -20,6 +20,12 @@ bool do_less_than(digits_type const& lhs, digits_type const& rhs) { rhs.rend()); } +void do_trim_leading_zeros(digits_type& num) { + auto const it + = std::find_if(num.rbegin(), num.rend(), [](auto v) { return v != 0; }); + num.erase(it.base(), num.end()); +} + digits_type do_addition(digits_type const& lhs, digits_type const& rhs) { int carry = 0; digits_type res; @@ -288,9 +294,7 @@ bool BigNum::less_than(BigNum const& rhs) const { } void BigNum::canonicalize() { - auto const it = std::find_if(digits_.rbegin(), digits_.rend(), - [](auto v) { return v != 0; }); - digits_.erase(it.base(), digits_.end()); + do_trim_leading_zeros(digits_); if (digits_.size() == 0) { sign_ = 0;