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)); } }
protected override BigNum Negate() { BigInt num = (BigInt)(-_num); return(new BigRational(num, (BigInt)_den.Clone())); }