a - b
(a, b)
| 808 | __add__, __radd__ = _operator_fallbacks(_add, operator.add) |
| 809 | |
| 810 | def _sub(a, b): |
| 811 | """a - b""" |
| 812 | na, da = a._numerator, a._denominator |
| 813 | nb, db = b._numerator, b._denominator |
| 814 | g = math.gcd(da, db) |
| 815 | if g == 1: |
| 816 | return Fraction._from_coprime_ints(na * db - da * nb, da * db) |
| 817 | s = da // g |
| 818 | t = na * (db // g) - nb * s |
| 819 | g2 = math.gcd(t, g) |
| 820 | if g2 == 1: |
| 821 | return Fraction._from_coprime_ints(t, s * db) |
| 822 | return Fraction._from_coprime_ints(t // g2, s * (db // g2)) |
| 823 | |
| 824 | __sub__, __rsub__ = _operator_fallbacks(_sub, operator.sub) |
| 825 |
nothing calls this directly
no test coverage detected