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;
|
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) {
|
||||||
|
|
Loading…
Reference in a new issue