File: test_mpz_io.txt

package info (click to toggle)
python-gmpy2 2.1.0~a4-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 2,048 kB
  • sloc: ansic: 24,051; python: 325; makefile: 117
file content (205 lines) | stat: -rw-r--r-- 3,845 bytes parent folder | download | duplicates (3)
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
MPZ related input/output
========================

    >>> import gmpy2 as G
    >>> from gmpy2 import mpz, mpq, mpfr, mpc
    >>> from fractions import Fraction as F
    >>> a = mpz(123)
    >>> b = mpz(456)

Test mpz construction
---------------------

    >>> mpz(3.14)
    mpz(3)
    >>> mpz(mpq(17,3))
    mpz(5)
    >>> mpz(23)
    mpz(23)
    >>> mpz(-23)
    mpz(-23)
    >>> x=1000*1000*1000*1000*1000*1000*1000
    >>> print(mpz(x))
    1000000000000000000000
    >>> mpz(0.0)
    mpz(0)
    >>> mpz(0.0)
    mpz(0)
    >>> mpz(-0.0)
    mpz(0)
    >>> mpz(float("nan"))
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: 'mpz' does not support NaN
    >>> mpz(float("inf"))
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    OverflowError: 'mpz' does not support Infinity
    >>> mpz(float("-inf"))
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    OverflowError: 'mpz' does not support Infinity
    >>> mpz("0")
    mpz(0)
    >>> mpz("-0")
    mpz(0)
    >>> mpz("hi")
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: invalid digits
    >>> mpz("123456", 7)
    mpz(22875)
    >>> mpz("123456", base=3)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: invalid digits
    >>> mpz()
    mpz(0)
    >>> mpz(F(1,2))
    mpz(0)
    >>> mpz(F(-3,2))
    mpz(-1)
    >>> mpz(F(3,2))
    mpz(1)
    >>> G.mpz('043')
    mpz(43)
    >>> G.mpz('43',0)
    mpz(43)
    >>> G.mpz('0o43')
    mpz(35)
    >>> G.mpz('0x43')
    mpz(67)
    >>> G.mpz('0x43',10)
    Traceback (innermost last):
      ...
    ValueError: invalid digits
    >>> G.mpz('43')
    mpz(43)

Test format
-----------

    >>> str(a)
    '123'
    >>> repr(a)
    'mpz(123)'
    >>> hex(a)
    '0x7b'
    >>> oct(a) == ('0o173' if sys.version_info[0] == 3 else '0173')
    True
    >>> G.mpz('123')
    mpz(123)
    >>> G.mpz('1001001011',2)
    mpz(587)
    >>> bin(G.mpz('1001001011',2))
    '0b1001001011'
    >>> '1001001011' == G.mpz('1001001011',2).digits(2)
    True
    >>> for i in range(2,63):
    ...     print(a.digits(i))
    ...
    1111011
    11120
    1323
    443
    323
    234
    173
    146
    123
    102
    a3
    96
    8b
    83
    7b
    74
    6f
    69
    63
    5i
    5d
    58
    53
    4n
    4j
    4f
    4b
    47
    43
    3u
    3r
    3o
    3l
    3i
    3f
    3C
    39
    36
    33
    30
    2d
    2b
    2Z
    2X
    2V
    2T
    2R
    2P
    2N
    2L
    2J
    2H
    2F
    2D
    2B
    29
    27
    25
    23
    21
    1z
    >>> print(a.digits(63))
    Traceback (innermost last):
      ...
    ValueError: base must be either 0 or in the interval 2 ... 62
    >>> a.__format__()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: function takes exactly 1 argument (0 given)
    >>> a.__format__('')
    '123'
    >>> a.__format__('d')
    '123'
    >>> a.__format__('b')
    '1111011'
    >>> a.__format__('o')
    '173'
    >>> a.__format__('x')
    '7b'
    >>> a.__format__('#x')
    '0x7b'
    >>> a.__format__('#X')
    '0X7B'
    >>> a.__format__('#o')
    '0o173'
    >>> a.__format__('#15o')
    '          0o173'
    >>> a.__format__('<#15o')
    '0o173          '
    >>> a.__format__('^#15o')
    '     0o173     '
    >>> a.__format__('>#15o')
    '          0o173'
    >>> a.__format__('^ #15o')
    '     0o173     '
    >>> a.__format__('^#15o')
    '     0o173     '
    >>> a.__format__('^ #16o')
    '      0o173     '
    >>> a.__format__('#^16o')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: Invalid conversion specification
    >>> a.__format__('^#16o')
    '     0o173      '