예제 #1
0
        /// <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);
        }
예제 #2
0
 /// <summary>
 /// Divides a fraction
 /// </summary>
 /// <param name="algebraicFraction"></param>
 public void Divide(AlgebraicFraction algebraicFraction)
 {
     this.SetContent(Operate(this, algebraicFraction, this.divide));
 }
예제 #3
0
 /// <summary>
 /// Substracts a fraction
 /// </summary>
 /// <param name="algebraicFraction"></param>
 public void Substract(AlgebraicFraction algebraicFraction)
 {
     this.SetContent(Operate(this, algebraicFraction, this.substract));
 }
예제 #4
0
 /// <summary>
 /// Multiplies a fraction
 /// </summary>
 /// <param name="algebraicFraction"></param>
 public void Multiply(AlgebraicFraction algebraicFraction)
 {
     this.SetContent(Operate(this, algebraicFraction, this.multiply));
 }
예제 #5
0
 /// <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);
 }
예제 #6
0
 /// <summary>
 /// Adds a fraction
 /// </summary>
 /// <param name="algebraicFraction"></param>
 public void Add(AlgebraicFraction algebraicFraction)
 {
     this.SetContent(Operate(this, algebraicFraction, this.add));
 }
예제 #7
0
        /// <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));
        }
예제 #8
0
 /// <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);
 }
예제 #9
0
 /// <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);
 }
예제 #10
0
        /// <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));
        }
예제 #11
0
 /// <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);
 }
예제 #12
0
 /// <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 }));
 }
예제 #13
0
 /// <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));
 }