Optimized functions

Changed by-value elements to by-reference.
Also changed private section to protected; in case someone wants to
inherit the Fraction class.
This commit is contained in:
Chris--A 2015-03-05 18:06:21 +10:00
parent 19daf61fee
commit 5379f830b1
2 changed files with 7 additions and 7 deletions

View File

@ -227,14 +227,14 @@ double Fraction::toAngle()
// the mediant is a fraction that is always between 2 fractions // the mediant is a fraction that is always between 2 fractions
// at least if within precission. // at least if within precission.
Fraction Fraction::mediant(Fraction a, Fraction b) Fraction Fraction::mediant(const Fraction &a, const Fraction &b)
{ {
return Fraction(a.n + b.n, a.d + b.d); return Fraction(a.n + b.n, a.d + b.d);
} }
// approximate a fraction with defined denominator // approximate a fraction with defined denominator
// sort of setDenominator(uint16_t den); // sort of setDenominator(uint16_t den);
Fraction Fraction::setDenominator(Fraction a, uint16_t b) Fraction Fraction::setDenominator(const Fraction &a, uint16_t b)
{ {
int32_t n = round((a.n * b * 1.0) / a.d); int32_t n = round((a.n * b * 1.0) / a.d);
int32_t d = b; int32_t d = b;
@ -245,7 +245,7 @@ Fraction Fraction::setDenominator(Fraction a, uint16_t b)
//////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////
// PRIVATE // PRIVATE
// http://en.wikipedia.org/wiki/Binary_GCD_algorithm // http://en.wikipedia.org/wiki/Binary_GCD_algorithm
int32_t Fraction::gcd(int32_t a , int32_t b) int32_t& Fraction::gcd(int32_t &a , int32_t &b)
{ {
long c; long c;
while ( a != 0 ) while ( a != 0 )

View File

@ -56,15 +56,15 @@ public:
bool isProper(); // abs(f) < 1 bool isProper(); // abs(f) < 1
double toAngle(); double toAngle();
static Fraction mediant(Fraction, Fraction); static Fraction mediant(const Fraction&, const Fraction&);
// approximate a fraction with defined denominator // approximate a fraction with defined denominator
static Fraction setDenominator(Fraction, uint16_t); static Fraction setDenominator(const Fraction&, uint16_t);
private: protected:
void simplify(); void simplify();
double fractionize(double); double fractionize(double);
int32_t gcd(int32_t, int32_t); int32_t& gcd(int32_t&, int32_t&);
int32_t n; int32_t n;
int32_t d; int32_t d;