import sys
is_monty = sys.platform == 'monty'
assert abs(5) == 5
assert abs(-5) == 5
assert abs(0) == 0
assert abs(3.14) == 3.14
assert abs(-3.14) == 3.14
assert abs(True) == 1
assert abs(False) == 0
assert round(2.5) == 2
assert round(3.5) == 4
assert round(0.5) == 0
assert round(-0.5) == 0
assert round(2.4) == 2
assert round(2.6) == 3
assert round(-2.5) == -2
assert round(-1.5) == -2
assert round(5) == 5
assert round(3.14159, 2) == 3.14
assert round(3.14159, 0) == 3.0
assert round(3.14159, ndigits=2) == 3.14
assert round(number=3.14159, ndigits=2) == 3.14
assert round(ndigits=2, number=3.14159) == 3.14
assert repr(round(-0.4, 0)) == '-0.0'
assert repr(round(-0.5, 0)) == '-0.0'
assert round(1234, -2) == 1200
assert round(1250, -2) == 1200
assert round(1350, -2) == 1400
assert round(15, -1) == 20
assert round(25, -1) == 20
assert round(2.5, None) == 2
assert round(True, -1) == 0
assert round(True, 2) == 1
assert round(False, -3) == 0
threw = False
try:
round(1.2, 1.5)
except TypeError:
threw = True
assert threw
assert round(5, 10**30) == 5
assert round(-5, 10**30) == -5
assert round(2.675, 10**30) == 2.675
assert round(5, 2**63 - 1) == 5
assert round(1.5, -(10**30)) == 0.0
assert repr(round(-1.5, -(10**30))) == '-0.0'
assert round(1.5, -(2**63)) == 0.0
assert round(12345, -(10**5)) == 0
assert round(2**63 - 1, -1) == 9223372036854775810
assert round(2**63 - 1, -19) == 10**19
assert round(-(2**63 - 1), -19) == -(10**19)
assert round(5 * 10**18, -19) == 0
assert round(2**63 - 1, -25) == 0
assert round(1234567890123456789, -5) == 1234567890123500000
assert round(-1250, -2) == -1200
if is_monty:
assert round(5, -(10**30)) == 0
assert round(5, -(2**63)) == 0
assert isinstance(round(1e15), int)
assert isinstance(round(-1e15), int)
assert round(0.0) == 0
assert round(-0.0) == 0
inf = float('inf')
neg_inf = float('-inf')
nan = float('nan')
threw = False
try:
round(inf)
except OverflowError:
threw = True
assert threw
threw = False
try:
round(neg_inf)
except OverflowError:
threw = True
assert threw
threw = False
try:
round(nan)
except ValueError:
threw = True
assert threw
r = round(inf, 0)
assert r == inf
r = round(neg_inf, 0)
assert r == neg_inf
r = round(nan, 0)
assert r != r
assert round(1.23, 10**6) == 1.23
assert round(1.23, -(10**6)) == 0.0
assert repr(round(-1.23, -(10**6))) == '-0.0'
assert isinstance(round(1.5, 1), float)
assert round(1.25, 1) == 1.2
assert round(1.35, 1) == 1.4
assert divmod(17, 5) == (3, 2)
assert divmod(10, 3) == (3, 1)
assert divmod(9, 3) == (3, 0)
assert divmod(-10, 3) == (-4, 2)
assert divmod(10, -3) == (-4, -2)
assert divmod(-10, -3) == (3, -1)
r = divmod(7.5, 2.5)
assert r[0] == 3.0 and r[1] == 0.0, 'divmod floats'
assert divmod(True, 2) == (0, 1)
assert divmod(5, True) == (5, 0)
assert pow(2, 3) == 8
assert pow(2, 0) == 1
assert pow(5, 1) == 5
assert pow(2, 10) == 1024
assert pow(2, -1) == 0.5
assert pow(4, -2) == 0.0625
assert pow(2.0, 3.0) == 8.0
assert pow(4.0, 0.5) == 2.0
assert pow(2, 10, 1000) == 24
assert pow(3, 4, 5) == 1
assert pow(7, 256, 13) == 9
big = 2**63
assert pow(big, 3, 7) == 1
assert pow(2, big, 7) == 4
assert pow(2, 3, big + 1) == 8
assert pow(big, 3, -(big + 1)) == -1
assert pow(2, 0, 5) == 1
assert pow(0, 5, 3) == 0
assert pow(5, 3, 1) == 0
assert pow(5, 3, -1) == 0
assert pow(5, 0, 1) == 0
assert pow(5, 0, -1) == 0
assert pow(-9223372036854775808, 1, -1) == 0
assert pow(-9223372036854775808, 7, -1) == 0
assert pow(True, 2) == 1
assert pow(2, True) == 2
assert pow(True, True) == 1
assert pow(True, -1) == 1.0
threw = False
try:
pow(0, -1)
except ZeroDivisionError:
threw = True
assert threw
threw = False
try:
pow(0.0, -1)
except ZeroDivisionError:
threw = True
assert threw