a + b
(a, b)
| 792 | # rationals, obtained from floats. |
| 793 | |
| 794 | def _add(a, b): |
| 795 | """a + b""" |
| 796 | na, da = a._numerator, a._denominator |
| 797 | nb, db = b._numerator, b._denominator |
| 798 | g = math.gcd(da, db) |
| 799 | if g == 1: |
| 800 | return Fraction._from_coprime_ints(na * db + da * nb, da * db) |
| 801 | s = da // g |
| 802 | t = na * (db // g) + nb * s |
| 803 | g2 = math.gcd(t, g) |
| 804 | if g2 == 1: |
| 805 | return Fraction._from_coprime_ints(t, s * db) |
| 806 | return Fraction._from_coprime_ints(t // g2, s * (db // g2)) |
| 807 | |
| 808 | __add__, __radd__ = _operator_fallbacks(_add, operator.add) |
| 809 |
nothing calls this directly
no test coverage detected