abacus: bignum: add order comparisons
This commit is contained in:
parent
17bd51d197
commit
2600eb2ba7
2 changed files with 30 additions and 0 deletions
|
|
@ -38,6 +38,19 @@ bool BigNum::equal(BigNum const& rhs) const {
|
|||
return digits_ == rhs.digits_;
|
||||
}
|
||||
|
||||
bool BigNum::less_than(BigNum const& rhs) const {
|
||||
assert(is_canonicalized());
|
||||
assert(rhs.is_canonicalized());
|
||||
|
||||
if (sign_ != rhs.sign_) {
|
||||
return sign_ < rhs.sign_;
|
||||
}
|
||||
|
||||
return std::lexicographical_compare(digits_.rbegin(), digits_.rend(),
|
||||
rhs.digits_.rbegin(),
|
||||
rhs.digits_.rend());
|
||||
}
|
||||
|
||||
void BigNum::canonicalize() {
|
||||
auto const it = std::find_if(digits_.rbegin(), digits_.rend(),
|
||||
[](auto v) { return v != 0; });
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue