From 7f7a609d30dbfc9c119bd4567b5ee9b47434fa66 Mon Sep 17 00:00:00 2001 From: Aryadev Chavali Date: Fri, 26 Jul 2024 03:11:58 +0100 Subject: Introduce normalised value in fraction class Bit of a cheat but it would allow us to do some interesting graphical stuff later. --- src/numerics.cpp | 6 +++++- src/numerics.hpp | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/numerics.cpp b/src/numerics.cpp index ddf7187..833ac5f 100644 --- a/src/numerics.cpp +++ b/src/numerics.cpp @@ -19,13 +19,17 @@ #include Fraction::Fraction(word_t numerator, word_t denominator) - : numerator{numerator}, denominator{denominator} + : numerator{numerator}, denominator{denominator}, + norm{numerator / ((long double)denominator)} { word_t hcf = gcd(MIN(numerator, denominator), MAX(numerator, denominator)); numerator /= hcf; denominator /= hcf; } +// floating point arithmetic inaccuracies blah blah blah better to use +// simplified fractions here + bool Fraction::operator<(const Fraction other) { if (other.denominator == denominator) diff --git a/src/numerics.hpp b/src/numerics.hpp index c1317cd..43b6c0b 100644 --- a/src/numerics.hpp +++ b/src/numerics.hpp @@ -30,6 +30,7 @@ typedef uint64_t word_t; struct Fraction { word_t numerator, denominator; + long double norm; Fraction(word_t numerator = 0, word_t denominator = 1); bool operator<(const Fraction other); -- cgit v1.2.3-13-gbd6f