// Takes two fractions, adds them and returns the results
        public Fraction.Fraction Addition(Fraction.Fraction first, Fraction.Fraction second)
        {
            Fraction.Fraction results = new Fraction.Fraction();

            // check for errors
            if (!IsNoneZeroDenominator(first.GetDenominator()) || !IsNoneZeroDenominator(second.GetDenominator()))
            {
                return(results);
            }

            // if not a common denominator do the thing
            if (first.GetDenominator() != second.GetDenominator())
            {
                int firstMultiple = first.GetDenominator();
                first.SetDenominator(first.GetDenominator() * second.GetDenominator());
                first.SetNumerator(first.GetNumerator() * second.GetDenominator());
                second.SetDenominator(firstMultiple * second.GetDenominator());
                second.SetNumerator(firstMultiple * second.GetNumerator());
            }

            // Do the math
            results.SetNumerator(first.GetNumerator() + second.GetNumerator());
            results.SetDenominator(first.GetDenominator());

            return(results);
        }
        // Reduce the fraction down to its lowest terms before my teacher gets mad at me
        public Fraction.Fraction ReducedFraction(Fraction.Fraction fractionToReduce)
        {
            // Protection against 0
            if (fractionToReduce.GetDenominator() == 0)
            {
                return(fractionToReduce);
            }

            int gcd = GreatestCommonDenominator(fractionToReduce.GetNumerator(), fractionToReduce.GetDenominator());

            if (gcd != 0)
            {
                fractionToReduce.SetNumerator(fractionToReduce.GetNumerator() / gcd);
                fractionToReduce.SetDenominator(fractionToReduce.GetDenominator() / gcd);
            }
            if (gcd < 0)
            {
                fractionToReduce.SetNumerator(fractionToReduce.GetNumerator() * -1);
                fractionToReduce.SetDenominator(fractionToReduce.GetDenominator() * -1);
            }
            return(fractionToReduce);
        }
        // Takes two fractions, divides the first with the second and returns the results
        public Fraction.Fraction Division(Fraction.Fraction first, Fraction.Fraction second)
        {
            Fraction.Fraction results = new Fraction.Fraction();

            // check for errors
            if (!IsNoneZeroDenominator(first.GetDenominator()) || !IsNoneZeroDenominator(second.GetDenominator()))
            {
                return(results);
            }

            // Do the math
            results.SetNumerator(first.GetNumerator() * second.GetDenominator());
            results.SetDenominator(first.GetDenominator() * second.GetNumerator());

            // Return the reduced version of the results
            return(results);
        }