public Fractional Calculate(params int[] coefficients) { Fractional frac = new Fractional() {Nominator = 1, Denominator = coefficients.Last()}; for (int i = coefficients.Length-2; i >= 0; i--) { frac = (frac + new Fractional() {Nominator = coefficients[i], Denominator = 1}).Reciprocal(); frac.Simplify(); //Console.WriteLine(frac.Reciprocal()); } return frac.Reciprocal(); }
public static Fractional operator +(Fractional f1, Fractional f2) { var gcd = GCD(f1.Denominator, f2.Denominator); var denominator = f1.Denominator/ gcd * f2.Denominator; var nominator = checked (f1.Nominator * (f2.Denominator/gcd) + f2.Nominator * (f1.Denominator/gcd)); var result = new Fractional() {Nominator = nominator, Denominator = denominator}; result.Simplify(); return result; }
public void TestSimplify(int nominator, int denominator, int resultNominator, int resultDenominator) { var sut = new Fractional() {Nominator = nominator, Denominator = denominator}; sut.Simplify(); Assert.That((int)sut.Nominator, Is.EqualTo(resultNominator)); Assert.That((int)sut.Denominator, Is.EqualTo(resultDenominator)); }