public static PrecisionDecimal operator /(PrecisionDecimal lhs, PrecisionDecimal rhs) { PrecisionDecimal ans = new PrecisionDecimal(); ans.P = lhs.P.Multiply(rhs.Q); ans.Q = lhs.Q.Multiply(rhs.P); return(ans); }
public static PrecisionDecimal operator +(PrecisionDecimal lhs, PrecisionDecimal rhs) { PrecisionDecimal ans = new PrecisionDecimal(); ans.P = (lhs.P.Multiply(rhs.Q)).Add(lhs.Q.Multiply(rhs.P)); ans.Q = lhs.Q.Multiply(rhs.Q); BigInteger factor = ans.P.Gcd(ans.Q); if (factor.Abs().CompareTo(BigInteger.One) != 0) { ans.P = ans.P.Divide(factor); ans.Q = ans.Q.Divide(factor); } return(ans); }
public bool Equals(PrecisionDecimal other) { int test = p.Multiply(other.Q).CompareTo(q.Multiply(other.P)); return(test == 0); }