rithm 14.6.0

Arbitrary precision arithmetic.
Documentation
from hypothesis import given

from rithm.integer import Int
from tests.utils import IntWithBuiltin, is_equivalent_to_builtin_int

from . import strategies


@given(strategies.ints, strategies.ints)
def test_alternatives(minuend: Int, subtrahend: Int) -> None:
    assert minuend - subtrahend == minuend + (-subtrahend)


@given(strategies.ints, strategies.ints_with_builtins)
def test_polymorphism(
    minuend: Int, subtrahend_with_builtin: IntWithBuiltin
) -> None:
    subtrahend, subtrahend_builtin = subtrahend_with_builtin

    assert minuend - subtrahend == minuend - subtrahend_builtin


@given(strategies.ints_with_builtins, strategies.ints_with_builtins)
def test_connection_with_builtin(
    minuend_with_builtin: IntWithBuiltin,
    subtrahend_with_builtin: IntWithBuiltin,
) -> None:
    minuend, minuend_builtin = minuend_with_builtin
    subtrahend, subtrahend_builtin = subtrahend_with_builtin

    assert is_equivalent_to_builtin_int(
        minuend - subtrahend, minuend_builtin - subtrahend_builtin
    )