diff options
author | Aryadev Chavali <aryadev@aryadevchavali.com> | 2024-07-26 03:11:58 +0100 |
---|---|---|
committer | Aryadev Chavali <aryadev@aryadevchavali.com> | 2024-07-26 03:11:58 +0100 |
commit | 7f7a609d30dbfc9c119bd4567b5ee9b47434fa66 (patch) | |
tree | 010ccfdec2c794aeea3fe3fac8fa4e660ca300ac /src | |
parent | f58a7e80ef503af58d8f7bfdc3d64e10717f9bf5 (diff) | |
download | cw_tree-7f7a609d30dbfc9c119bd4567b5ee9b47434fa66.tar.gz cw_tree-7f7a609d30dbfc9c119bd4567b5ee9b47434fa66.tar.bz2 cw_tree-7f7a609d30dbfc9c119bd4567b5ee9b47434fa66.zip |
Introduce normalised value in fraction class
Bit of a cheat but it would allow us to do some interesting graphical
stuff later.
Diffstat (limited to 'src')
-rw-r--r-- | src/numerics.cpp | 6 | ||||
-rw-r--r-- | src/numerics.hpp | 1 |
2 files changed, 6 insertions, 1 deletions
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 <sstream> 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); |