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>
|
#include <sstream>
|
||||||
|
|
||||||
Fraction::Fraction(word_t numerator, word_t denominator)
|
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));
|
word_t hcf = gcd(MIN(numerator, denominator), MAX(numerator, denominator));
|
||||||
numerator /= hcf;
|
numerator /= hcf;
|
||||||
denominator /= hcf;
|
denominator /= hcf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// floating point arithmetic inaccuracies blah blah blah better to use
|
||||||
|
// simplified fractions here
|
||||||
|
|
||||||
bool Fraction::operator<(const Fraction other)
|
bool Fraction::operator<(const Fraction other)
|
||||||
{
|
{
|
||||||
if (other.denominator == denominator)
|
if (other.denominator == denominator)
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ typedef uint64_t word_t;
|
|||||||
struct Fraction
|
struct Fraction
|
||||||
{
|
{
|
||||||
word_t numerator, denominator;
|
word_t numerator, denominator;
|
||||||
|
long double norm;
|
||||||
|
|
||||||
Fraction(word_t numerator = 0, word_t denominator = 1);
|
Fraction(word_t numerator = 0, word_t denominator = 1);
|
||||||
bool operator<(const Fraction other);
|
bool operator<(const Fraction other);
|
||||||
|
|||||||
Reference in New Issue
Block a user