diff options
-rw-r--r-- | sigcore/Fraction.cpp | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/sigcore/Fraction.cpp b/sigcore/Fraction.cpp index 9c4fa1a9..232789fb 100644 --- a/sigcore/Fraction.cpp +++ b/sigcore/Fraction.cpp @@ -127,12 +127,8 @@ Sigcore::Fraction Sigcore::Fraction::operator/(const Fraction& rhs) const Sigcore::Fraction Sigcore::Fraction::operator%(const Fraction& rhs) const { - // FIXME: can it be done directly? - Fraction ans(rhs); - while (*this < ans) - ans -= *this; - while (ans <= 0) - ans += *this; + // Formula from Kevin Kofler + Fraction ans((m_numerator * rhs.m_denominator) % (m_denominator * rhs.m_numerator), m_denominator * rhs.m_denominator); ans.reduce(); return ans; } |