abacus: bignum: add addition & substraction

This commit is contained in:
Bruno BELANYI 2021-08-20 18:53:22 +02:00
parent d083ede78c
commit fe01661613
3 changed files with 203 additions and 0 deletions

View file

@ -25,6 +25,28 @@ public:
return ret;
}
friend BigNum& operator+=(BigNum& lhs, BigNum const& rhs) {
lhs.add(rhs);
return lhs;
}
friend BigNum operator+(BigNum const& lhs, BigNum const& rhs) {
auto ret = lhs;
ret += rhs;
return ret;
}
friend BigNum& operator-=(BigNum& lhs, BigNum const& rhs) {
lhs.substract(rhs);
return lhs;
}
friend BigNum operator-(BigNum const& lhs, BigNum const& rhs) {
auto ret = lhs;
ret -= rhs;
return ret;
}
friend bool operator==(BigNum const& lhs, BigNum const& rhs) {
return lhs.equal(rhs);
}
@ -53,6 +75,8 @@ private:
std::ostream& dump(std::ostream& out) const;
void flip_sign();
void add(BigNum const& rhs);
void substract(BigNum const& rhs);
bool equal(BigNum const& rhs) const;
bool less_than(BigNum const& rhs) const;