summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_mpz.py
blob: 2e57db47958f7dbd6aed7776a81692144074d5de (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90

import mpz
from test_support import vereq, TestFailed

def check_conversion(num):
    mpz_num = mpz.mpz(num)
    vereq(int(mpz_num), num)
    vereq(long(mpz_num), num)
    vereq(str(mpz_num), 'mpz(%s)' % `int(num)`)

check_conversion(10)
check_conversion(10L)
# FIXME: should check strings, but I'm not sure it works, this seems odd:
#   mpz.mpz('10') == mpz(12337)

vereq(mpz.divm(100,  200,  3), 2)
vereq(mpz.divm(100L, 200,  3), 2)
vereq(mpz.divm(100,  200L, 3), 2)
vereq(mpz.divm(100L, 200L, 3), 2)

vereq(mpz.gcd(100,  200),  100)
vereq(mpz.gcd(100L, 200),  100)
vereq(mpz.gcd(100,  200L), 100)
vereq(mpz.gcd(100L, 200L), 100)

vereq(mpz.gcdext(100,  200),  (100, 1, 0))
vereq(mpz.gcdext(100L, 200),  (100, 1, 0))
vereq(mpz.gcdext(100,  200L), (100, 1, 0))
vereq(mpz.gcdext(100L, 200L), (100, 1, 0))

vereq(mpz.powm(100,  0,  3), 1)
vereq(mpz.powm(100L, 0,  3), 1)
vereq(mpz.powm(100,  0L, 3), 1)
vereq(mpz.powm(100L, 0L, 3), 1)

vereq(mpz.powm(101,  5,  3333), 1616)
vereq(mpz.powm(101L, 5,  3333), 1616)
vereq(mpz.powm(101,  5L, 3333), 1616)
vereq(mpz.powm(101L, 5L, 3333), 1616)

vereq(mpz.sqrt(100),  10)
vereq(mpz.sqrt(100L), 10)
vereq(mpz.sqrt(200),  14)
vereq(mpz.sqrt(200L), 14)

vereq(mpz.sqrtrem(100),  (10, 0))
vereq(mpz.sqrtrem(100L), (10, 0))
vereq(mpz.sqrtrem(200),  (14, 4))
vereq(mpz.sqrtrem(200L), (14, 4))

try: mpz.mpz(10.)
except TypeError: pass
else: raise TestFailed, 'mpz(10.) should raise a TypeError'

try: mpz.powm(10.)
except TypeError: pass
else: raise TestFailed, 'powm(10.) should raise a TypeError'

try: mpz.powm(100,  1,  0)
except ValueError: pass
else: raise TestFailed, 'powm(100, 1, 0) should raise a ValueError'

try: mpz.divm(10, 10)
except TypeError: pass
else: raise TestFailed, 'divm(10, 10) should raise a TypeError'

try: mpz.divm(10, 10, 10.)
except TypeError: pass
else: raise TestFailed, 'divm(10, 10, 10.) should raise a TypeError'

try: mpz.gcd(10)
except TypeError: pass
else: raise TestFailed, 'gcd(10) should raise a TypeError'

try: mpz.gcd(10, 10.)
except TypeError: pass
else: raise TestFailed, 'gcd(10, 10.) should raise a TypeError'

try: mpz.gcdext(10)
except TypeError: pass
else: raise TestFailed, 'gcdext(10) should raise a TypeError'

try: mpz.gcdext(10, 10.)
except TypeError: pass
else: raise TestFailed, 'gcdext(10, 10.) should raise a TypeError'

try: mpz.mpz(-10).binary()
except ValueError: pass
else: raise TestFailed, 'mpz(-10).binary() should raise a ValueError'