abs_sub draft impl for integer.cpp

This commit is contained in:
Pagwin 2024-12-11 16:32:53 -05:00
parent a1ec5ddaa5
commit b655135ea4
No known key found for this signature in database
GPG key ID: 81137023740CA260

View file

@ -128,7 +128,18 @@ public:
} }
return lhs; return lhs;
} }
friend Integer &abs_sub(Integer &lhs, Integer const &rhs) { return lhs; } friend Integer &abs_sub(Integer &lhs, Integer const &rhs) {
assert(lhs > rhs);
auto t_size = rhs.true_size();
bool overflow = false;
for (std::size_t i = 0; i < t_size; i++) {
if (rhs.bytes[i] + (overflow ? 1 : 0) > lhs.bytes[i]) {
overflow = true;
}
lhs.bytes[i] -= rhs.bytes[i] + (overflow ? 1 : 0);
}
return lhs;
}
friend Integer &operator+=(Integer &lhs, Integer const &rhs) { friend Integer &operator+=(Integer &lhs, Integer const &rhs) {
// TODO: negative numbers // TODO: negative numbers
if (lhs.isNegative == rhs.isNegative) { if (lhs.isNegative == rhs.isNegative) {