From 14d8dc964f40838c049a414e1650da0ef27279ce Mon Sep 17 00:00:00 2001 From: Josh Koon <45607479+joshkoon@users.noreply.github.com> Date: Mon, 25 Feb 2019 10:22:13 -0800 Subject: [PATCH] Remove unnecessary Rational::IsZero() in favor of == 0 comparisons --- src/CalcManager/CEngine/Rational.cpp | 5 ----- src/CalcManager/CEngine/scioper.cpp | 2 +- src/CalcManager/CEngine/sciset.cpp | 9 +++------ src/CalcManager/Header Files/Rational.h | 1 - 4 files changed, 4 insertions(+), 13 deletions(-) diff --git a/src/CalcManager/CEngine/Rational.cpp b/src/CalcManager/CEngine/Rational.cpp index 2e67ce7f..22a972a3 100644 --- a/src/CalcManager/CEngine/Rational.cpp +++ b/src/CalcManager/CEngine/Rational.cpp @@ -444,11 +444,6 @@ namespace CalcEngine return !(lhs < rhs); } - bool Rational::IsZero() const - { - return this->P().IsZero(); - } - wstring Rational::ToString(uint32_t radix, NUMOBJ_FMT fmt, int32_t precision) const { PRAT rat = this->ToPRAT(); diff --git a/src/CalcManager/CEngine/scioper.cpp b/src/CalcManager/CEngine/scioper.cpp index a29be190..06fe3450 100644 --- a/src/CalcManager/CEngine/scioper.cpp +++ b/src/CalcManager/CEngine/scioper.cpp @@ -11,7 +11,7 @@ using namespace CalcEngine::RationalMath; CalcEngine::Rational CCalcEngine::DoOperation(int operation, CalcEngine::Rational const& lhs, CalcEngine::Rational const& rhs) { // Remove any variance in how 0 could be represented in rat e.g. -0, 0/n, etc. - auto result = (!lhs.IsZero() ? lhs : 0); + auto result = (lhs != 0 ? lhs : 0); try { diff --git a/src/CalcManager/CEngine/sciset.cpp b/src/CalcManager/CEngine/sciset.cpp index 52cfaab7..1ae1dbcb 100644 --- a/src/CalcManager/CEngine/sciset.cpp +++ b/src/CalcManager/CEngine/sciset.cpp @@ -85,12 +85,9 @@ bool CCalcEngine::TryToggleBit(CalcEngine::Rational& rat, DWORD wbitno) } Rational result = Integer(rat); - if (result.IsZero()) - { - // This is the same work around happenning in SciCalcFunctions. Ought to move to intrat function itself. - // Basic bug is there which doesn't treat 0/ n as 0, or -0 as 0 etc. - result = 0; - } + + // Remove any variance in how 0 could be represented in rat e.g. -0, 0/n, etc. + result = (result != 0 ? result : 0); // XOR the result with 2^wbitno power rat = result ^ Pow(2, static_cast(wbitno)); diff --git a/src/CalcManager/Header Files/Rational.h b/src/CalcManager/Header Files/Rational.h index d10247f2..7b73585e 100644 --- a/src/CalcManager/Header Files/Rational.h +++ b/src/CalcManager/Header Files/Rational.h @@ -63,7 +63,6 @@ namespace CalcEngine friend bool operator<=(Rational const& lhs, Rational const& rhs); friend bool operator>=(Rational const& lhs, Rational const& rhs); - bool IsZero() const; std::wstring ToString(uint32_t radix, NUMOBJ_FMT format, int32_t precision) const; uint64_t ToUInt64_t() const;