Пример #1
0
        protected internal override BigNum Absolute()
        {
            if (_num.Sign == _den.Sign)
            {
                return(Clone());
            }

            // hold on, do I need to clone the BigInt instances since everything's immutable anyway?

            if (!_num.Sign)
            {
                BigInt newNum = (BigInt)(-_num);
                BigInt newDen = (BigInt)_den.Clone();
                return(new BigRational(newNum, newDen));
            }
            else                 // then _den must be negative

            {
                BigInt newNum = (BigInt)_num.Clone();
                BigInt newDen = (BigInt)(-_den);
                return(new BigRational(newNum, newDen));
            }
        }
Пример #2
0
        protected override BigNum Negate()
        {
            BigInt num = (BigInt)(-_num);

            return(new BigRational(num, (BigInt)_den.Clone()));
        }