Ejemplo n.º 1
0
        public Number(BigInteger numerator, BigInteger denominator)
        {
            if (denominator == BigInteger.Zero)
            {
                numerator   = 0;
                denominator = 0;
                State       = NumberState.NaN;
            }
            BigInteger num = NumberAlgorithms.Gcd(numerator, denominator);

            if (num == BigInteger.Zero)
            {
                State = NumberState.PositiveInfinity;
            }
            else if (denominator < BigInteger.Zero)
            {
                Numerator   = -numerator / num;
                Denominator = -denominator / num;
            }
            else
            {
                Numerator   = numerator / num;
                Denominator = denominator / num;
            }
        }
Ejemplo n.º 2
0
        public static Number operator +(Number a, Number b)
        {
            if (NumberAlgorithms.TryHandleSpecialCase(a, b, out Number value))
            {
                return(value);
            }

            BigInteger num         = NumberAlgorithms.Gcd(a.Denominator, b.Denominator);
            BigInteger numerator   = a.Numerator * (b.Denominator / num) + b.Numerator * (a.Denominator / num);
            BigInteger denominator = a.Denominator * (b.Denominator / num);

            return(new Number(numerator, denominator));
        }