Introduce normalised value in fraction class
Bit of a cheat but it would allow us to do some interesting graphical stuff later.
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user