From b655135ea49fa0a8c75693b1625e92a476d84114 Mon Sep 17 00:00:00 2001 From: Pagwin Date: Wed, 11 Dec 2024 16:32:53 -0500 Subject: [PATCH] abs_sub draft impl for integer.cpp --- integer.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/integer.cpp b/integer.cpp index 0a8c544..d6db35d 100644 --- a/integer.cpp +++ b/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) {