abs_sub draft impl for integer.cpp
This commit is contained in:
parent
a1ec5ddaa5
commit
b655135ea4
1 changed files with 12 additions and 1 deletions
13
integer.cpp
13
integer.cpp
|
@ -128,7 +128,18 @@ public:
|
|||
}
|
||||
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) {
|
||||
// TODO: negative numbers
|
||||
if (lhs.isNegative == rhs.isNegative) {
|
||||
|
|
Loading…
Reference in a new issue