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
// 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);
}
// approximate a fraction with defined denominator
// 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 d = b;
@ -245,7 +245,7 @@ Fraction Fraction::setDenominator(Fraction a, uint16_t b)
////////////////////////////////////////////////////////////////
// PRIVATE
// 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;
while ( a != 0 )

View File

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