/// <summary> /// Gets the mcm of the denominators's fractions /// </summary> /// <param name="af1"></param> /// <returns></returns> private Polynomial GetMcm(AlgebraicFraction af1) { // Calculate the mcm of the denominators obtaining a new denominator Polynomial oldDenominator = af1.Denominator; var arrayController = ArrayController.GetInstance(); af1.Denominator = arrayController.GetMcm( new[] { af1.Denominator, this.Denominator } ).GetExplicitPolynomial(); return(oldDenominator); }
/// <summary> /// Divides a fraction /// </summary> /// <param name="algebraicFraction"></param> public void Divide(AlgebraicFraction algebraicFraction) { this.SetContent(Operate(this, algebraicFraction, this.divide)); }
/// <summary> /// Substracts a fraction /// </summary> /// <param name="algebraicFraction"></param> public void Substract(AlgebraicFraction algebraicFraction) { this.SetContent(Operate(this, algebraicFraction, this.substract)); }
/// <summary> /// Multiplies a fraction /// </summary> /// <param name="algebraicFraction"></param> public void Multiply(AlgebraicFraction algebraicFraction) { this.SetContent(Operate(this, algebraicFraction, this.multiply)); }
/// <summary> /// Function to support the public operator for the division of a couple of fractions /// </summary> /// <param name="algebraicFraction"> /// The fraction 1. /// </param> /// <param name="algebraicFraction2"> /// The fraction 2. /// </param> /// <returns></returns> private static AlgebraicFraction BaseDivide(AlgebraicFraction algebraicFraction, AlgebraicFraction algebraicFraction2) { return(algebraicFraction / algebraicFraction2); }
/// <summary> /// Adds a fraction /// </summary> /// <param name="algebraicFraction"></param> public void Add(AlgebraicFraction algebraicFraction) { this.SetContent(Operate(this, algebraicFraction, this.add)); }
/// <summary> /// The base subtraction. /// </summary> /// <param name="fractions"> /// The algebraicalFraction 1. /// </param> /// <returns>AlgebraicalFraction</returns> private static AlgebraicFraction BaseSubstract(IEnumerable <AlgebraicFraction> fractions) { var algebraicalFraction = new AlgebraicFraction(0); return(fractions.Aggregate(algebraicalFraction, (current, fraction) => current - fraction)); }
/// <summary> /// Function to support the public operator for the multiplication of a couple of fractions /// <param name="algebraicFraction"></param> /// <param name="algebraicFraction2"></param> /// <returns></returns> /// </summary> private static AlgebraicFraction BaseMultiply(AlgebraicFraction algebraicFraction, AlgebraicFraction algebraicFraction2) { return(algebraicFraction * algebraicFraction2); }
/// <summary> /// Function to support the public operator for the substraction of a couple a fractions /// <param name="algebraicFraction"></param> /// <param name="algebraicFraction2"></param> /// <returns></returns> /// </summary> private static AlgebraicFraction BaseSubstract(AlgebraicFraction algebraicFraction, AlgebraicFraction algebraicFraction2) { return(algebraicFraction - algebraicFraction2); }
/// <summary> /// Function to support the public operator for the addition of a list of fractions. /// </summary> /// <param name="fractions"></param> /// <returns></returns> private static AlgebraicFraction BaseAdd(IEnumerable <AlgebraicFraction> fractions) { var af = new AlgebraicFraction(0); return(fractions.Aggregate(af, (current, fraction) => current + fraction)); }
/// <summary> /// Function to support the public operator for the addition between the current element and the ones passed by argument /// </summary> /// <param name="algebraicFraction"> /// The algebraicalFraction 1. /// </param> /// <param name="algebraicFraction2"> /// The algebraicalFraction 2. /// </param> /// <returns> /// The <see cref="AlgebraicFraction"/>. /// </returns> private static AlgebraicFraction BaseAdd(AlgebraicFraction algebraicFraction, AlgebraicFraction algebraicFraction2) { return(algebraicFraction + algebraicFraction2); }
/// <summary> /// Function to support the public operator for the operation indicated between the current element and the one passed by argument /// </summary> /// <param name="algebraicFraction1"> /// The Algebraical Fraction 1. /// </param> /// <param name="algebraicFraction2"> /// The Algebraical Fraction 2. /// </param> /// <param name="operation"> /// The operation. /// </param> /// <returns> /// The <see cref="AlgebraicFraction"/>. /// </returns> private static AlgebraicFraction Operate(AlgebraicFraction algebraicFraction1, AlgebraicFraction algebraicFraction2, Operation operation) { return(operation(new[] { algebraicFraction1, algebraicFraction2 })); }
/// <summary> /// Returns whether the fractions have the same denominator. /// </summary> /// <param name="af"> /// The fraction. /// </param> /// <returns> /// The <see cref="bool"/>. /// </returns> public bool HasSameDenominator(AlgebraicFraction af) { return(this.Denominator.Equals(af.Denominator)); }