mirror of
https://github.com/RobTillaart/Arduino.git
synced 2024-09-19 16:46:11 -04:00
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:
parent
19daf61fee
commit
5379f830b1
@ -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 )
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user