From 08e973a0b609efde2b103c033d4b9b6b69326f02 Mon Sep 17 00:00:00 2001 From: Josh Koon <45607479+joshkoon@users.noreply.github.com> Date: Thu, 21 Feb 2019 10:18:50 -0800 Subject: [PATCH] Convert Rational::Negate to an operator override --- src/CalcManager/CEngine/Rational.cpp | 4 ++-- src/CalcManager/CEngine/scicomm.cpp | 5 ++--- src/CalcManager/CEngine/scidisp.cpp | 2 +- src/CalcManager/CEngine/scifunc.cpp | 3 +-- src/CalcManager/CEngine/scioper.cpp | 2 +- src/CalcManager/CEngine/sciset.cpp | 3 +-- src/CalcManager/Header Files/Rational.h | 5 ++++- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/CalcManager/CEngine/Rational.cpp b/src/CalcManager/CEngine/Rational.cpp index 20bf9903..d82fddf0 100644 --- a/src/CalcManager/CEngine/Rational.cpp +++ b/src/CalcManager/CEngine/Rational.cpp @@ -86,9 +86,9 @@ namespace CalcEngine return m_q; } - Rational Rational::Negate() const + Rational Rational::operator-() const { - return Rational{ Number{ -1 * m_p.Sign(), m_p.Exp(), m_p.Mantissa() }, m_q}; + return Rational{ Number{ -1 * m_p.Sign(), m_p.Exp(), m_p.Mantissa() }, m_q }; } Rational Rational::Add(Rational const& rhs, int32_t precision) const diff --git a/src/CalcManager/CEngine/scicomm.cpp b/src/CalcManager/CEngine/scicomm.cpp index 71ea956f..b4297ed7 100644 --- a/src/CalcManager/CEngine/scicomm.cpp +++ b/src/CalcManager/CEngine/scicomm.cpp @@ -691,7 +691,7 @@ void CCalcEngine::ProcessCommandWorker(WPARAM wParam) m_HistoryCollector.AddOpndToHistory(m_numberString, m_currentVal); } - m_currentVal = m_currentVal.Negate(); + m_currentVal = -(m_currentVal); DisplayNum(); m_HistoryCollector.AddUnaryOpToHistory(IDC_SIGN, m_bInv, m_angletype); @@ -1054,8 +1054,7 @@ wstring CCalcEngine::GetStringForDisplay(Rational const& rat, uint32_t radix) { // If high bit is set, then get the decimal number in negative 2's compl form. tempRat = tempRat.Not(m_chopNumbers[m_numwidth], m_precision); - tempRat = tempRat.Add(1, m_precision); - tempRat = tempRat.Negate(); + tempRat = -(tempRat.Add(1, m_precision)); } result = tempRat.ToString(radix, m_nFE, m_precision); diff --git a/src/CalcManager/CEngine/scidisp.cpp b/src/CalcManager/CEngine/scidisp.cpp index 669fcdbb..511167fc 100644 --- a/src/CalcManager/CEngine/scidisp.cpp +++ b/src/CalcManager/CEngine/scidisp.cpp @@ -64,7 +64,7 @@ CalcEngine::Rational CCalcEngine::TruncateNumForIntMath(CalcEngine::Rational con if (result.IsLess(0, m_precision)) { // if negative make positive by doing a twos complement - result = result.Negate(); + result = -(result); result = result.Sub(1, m_precision); result = result.Not(m_chopNumbers[m_numwidth], m_precision); } diff --git a/src/CalcManager/CEngine/scifunc.cpp b/src/CalcManager/CEngine/scifunc.cpp index d3eb62ff..bab7a23f 100644 --- a/src/CalcManager/CEngine/scifunc.cpp +++ b/src/CalcManager/CEngine/scifunc.cpp @@ -40,8 +40,7 @@ CalcEngine::Rational CCalcEngine::SciCalcFunctions(CalcEngine::Rational const& r if (m_radix == 10 && !m_fIntegerMode) { result = RationalMath::Integer(rat, m_precision); - result = result.Add(1, m_precision); - result = result.Negate(); + result = -(result.Add(1, m_precision)); } else { diff --git a/src/CalcManager/CEngine/scioper.cpp b/src/CalcManager/CEngine/scioper.cpp index 59dbb572..6f964000 100644 --- a/src/CalcManager/CEngine/scioper.cpp +++ b/src/CalcManager/CEngine/scioper.cpp @@ -121,7 +121,7 @@ CalcEngine::Rational CCalcEngine::DoOperation(int operation, CalcEngine::Rationa if (m_fIntegerMode && iFinalSign == -1) { - result = Integer(result, m_precision).Negate(); + result = -(Integer(result, m_precision)); } break; diff --git a/src/CalcManager/CEngine/sciset.cpp b/src/CalcManager/CEngine/sciset.cpp index 716bba18..521c1d1d 100644 --- a/src/CalcManager/CEngine/sciset.cpp +++ b/src/CalcManager/CEngine/sciset.cpp @@ -25,9 +25,8 @@ void CCalcEngine::SetRadixTypeAndNumWidth(RADIX_TYPE radixtype, NUM_WIDTH numwid { // If high bit is set, then get the decimal number in -ve 2'scompl form. auto tempResult = m_currentVal.Not(m_chopNumbers[m_numwidth], m_precision); - tempResult = tempResult.Add(1, m_precision); - m_currentVal = tempResult.Negate(); + m_currentVal = -(tempResult.Add(1, m_precision)); } } diff --git a/src/CalcManager/Header Files/Rational.h b/src/CalcManager/Header Files/Rational.h index aea8ce49..a4e99305 100644 --- a/src/CalcManager/Header Files/Rational.h +++ b/src/CalcManager/Header Files/Rational.h @@ -10,6 +10,9 @@ namespace CalcEngine // RatPack calculations currently support up to Base64. inline constexpr uint32_t RATIONAL_BASE = 10; + // Default Precision to use for Rational calculations + static constexpr int32_t RATIONAL_PRECISION = 128; + class Rational { public: @@ -26,7 +29,7 @@ namespace CalcEngine Number const& P() const; Number const& Q() const; - Rational Negate() const; + Rational operator-() const; Rational Add(Rational const& rhs, int32_t precision) const; Rational Sub(Rational const& rhs, int32_t precision) const; Rational Mul(Rational const& rhs, int32_t precision) const;