/ test / test_context.txt
test_context.txt
  1  Test context handling
  2  ---------------------
  3  
  4  >>> import gmpy2
  5  >>> from gmpy2 import mpfr,mpc,get_context,set_context,ieee,context,local_context
  6  
  7  Test ieee()
  8  -----------
  9  
 10  >>> ieee(32)
 11  context(precision=24, real_prec=Default, imag_prec=Default,
 12          round=RoundToNearest, real_round=Default, imag_round=Default,
 13          emax=128, emin=-148,
 14          subnormalize=True,
 15          trap_underflow=False, underflow=False,
 16          trap_overflow=False, overflow=False,
 17          trap_inexact=False, inexact=False,
 18          trap_invalid=False, invalid=False,
 19          trap_erange=False, erange=False,
 20          trap_divzero=False, divzero=False,
 21          allow_complex=False,
 22          rational_division=False)
 23  >>> ieee(64)
 24  context(precision=53, real_prec=Default, imag_prec=Default,
 25          round=RoundToNearest, real_round=Default, imag_round=Default,
 26          emax=1024, emin=-1073,
 27          subnormalize=True,
 28          trap_underflow=False, underflow=False,
 29          trap_overflow=False, overflow=False,
 30          trap_inexact=False, inexact=False,
 31          trap_invalid=False, invalid=False,
 32          trap_erange=False, erange=False,
 33          trap_divzero=False, divzero=False,
 34          allow_complex=False,
 35          rational_division=False)
 36  >>> ieee(128)
 37  context(precision=113, real_prec=Default, imag_prec=Default,
 38          round=RoundToNearest, real_round=Default, imag_round=Default,
 39          emax=16384, emin=-16493,
 40          subnormalize=True,
 41          trap_underflow=False, underflow=False,
 42          trap_overflow=False, overflow=False,
 43          trap_inexact=False, inexact=False,
 44          trap_invalid=False, invalid=False,
 45          trap_erange=False, erange=False,
 46          trap_divzero=False, divzero=False,
 47          allow_complex=False,
 48          rational_division=False)
 49  >>> gmpy2.ieee(256)
 50  context(precision=237, real_prec=Default, imag_prec=Default,
 51          round=RoundToNearest, real_round=Default, imag_round=Default,
 52          emax=262144, emin=-262377,
 53          subnormalize=True,
 54          trap_underflow=False, underflow=False,
 55          trap_overflow=False, overflow=False,
 56          trap_inexact=False, inexact=False,
 57          trap_invalid=False, invalid=False,
 58          trap_erange=False, erange=False,
 59          trap_divzero=False, divzero=False,
 60          allow_complex=False,
 61          rational_division=False)
 62  >>> gmpy2.ieee(-1)
 63  Traceback (most recent call last):
 64    File "<stdin>", line 1, in <module>
 65  ValueError: bitwidth must be 16, 32, 64, 128; or must be greater than 128 and divisible by 32.
 66  >>> gmpy2.ieee("a")
 67  Traceback (most recent call last):
 68    File "<stdin>", line 1, in <module>
 69  TypeError: ieee() requires 'int' argument
 70  >>> set_context(ieee(32))
 71  >>> gmpy2.const_pi().digits(2)
 72  ('110010010000111111011011', 2, 24)
 73  >>> set_context(ieee(64))
 74  >>> gmpy2.const_pi().digits(2)
 75  ('11001001000011111101101010100010001000010110100011000', 2, 53)
 76  >>> set_context(ieee(128))
 77  >>> gmpy2.const_pi().digits(2)
 78  ('11001001000011111101101010100010001000010110100011000010001101001100010011000110011000101000101110000000110111000', 2, 113)
 79  
 80  Test context()
 81  --------------
 82  
 83  >>> context()
 84  context(precision=53, real_prec=Default, imag_prec=Default,
 85          round=RoundToNearest, real_round=Default, imag_round=Default,
 86          emax=1073741823, emin=-1073741823,
 87          subnormalize=False,
 88          trap_underflow=False, underflow=False,
 89          trap_overflow=False, overflow=False,
 90          trap_inexact=False, inexact=False,
 91          trap_invalid=False, invalid=False,
 92          trap_erange=False, erange=False,
 93          trap_divzero=False, divzero=False,
 94          allow_complex=False,
 95          rational_division=False)
 96  >>> context(precision=100)
 97  context(precision=100, real_prec=Default, imag_prec=Default,
 98          round=RoundToNearest, real_round=Default, imag_round=Default,
 99          emax=1073741823, emin=-1073741823,
100          subnormalize=False,
101          trap_underflow=False, underflow=False,
102          trap_overflow=False, overflow=False,
103          trap_inexact=False, inexact=False,
104          trap_invalid=False, invalid=False,
105          trap_erange=False, erange=False,
106          trap_divzero=False, divzero=False,
107          allow_complex=False,
108          rational_division=False)
109  >>> context(real_prec=100)
110  context(precision=53, real_prec=100, imag_prec=Default,
111          round=RoundToNearest, real_round=Default, imag_round=Default,
112          emax=1073741823, emin=-1073741823,
113          subnormalize=False,
114          trap_underflow=False, underflow=False,
115          trap_overflow=False, overflow=False,
116          trap_inexact=False, inexact=False,
117          trap_invalid=False, invalid=False,
118          trap_erange=False, erange=False,
119          trap_divzero=False, divzero=False,
120          allow_complex=False,
121          rational_division=False)
122  >>> context(real_prec=100,imag_prec=200)
123  context(precision=53, real_prec=100, imag_prec=200,
124          round=RoundToNearest, real_round=Default, imag_round=Default,
125          emax=1073741823, emin=-1073741823,
126          subnormalize=False,
127          trap_underflow=False, underflow=False,
128          trap_overflow=False, overflow=False,
129          trap_inexact=False, inexact=False,
130          trap_invalid=False, invalid=False,
131          trap_erange=False, erange=False,
132          trap_divzero=False, divzero=False,
133          allow_complex=False,
134          rational_division=False)
135  
136  Test get_context()
137  ------------------
138  
139  >>> set_context(context())
140  >>> get_context()
141  context(precision=53, real_prec=Default, imag_prec=Default,
142          round=RoundToNearest, real_round=Default, imag_round=Default,
143          emax=1073741823, emin=-1073741823,
144          subnormalize=False,
145          trap_underflow=False, underflow=False,
146          trap_overflow=False, overflow=False,
147          trap_inexact=False, inexact=False,
148          trap_invalid=False, invalid=False,
149          trap_erange=False, erange=False,
150          trap_divzero=False, divzero=False,
151          allow_complex=False,
152          rational_division=False)
153  >>> a=get_context()
154  >>> a.precision=100
155  >>> a
156  context(precision=100, real_prec=Default, imag_prec=Default,
157          round=RoundToNearest, real_round=Default, imag_round=Default,
158          emax=1073741823, emin=-1073741823,
159          subnormalize=False,
160          trap_underflow=False, underflow=False,
161          trap_overflow=False, overflow=False,
162          trap_inexact=False, inexact=False,
163          trap_invalid=False, invalid=False,
164          trap_erange=False, erange=False,
165          trap_divzero=False, divzero=False,
166          allow_complex=False,
167          rational_division=False)
168  >>> get_context()
169  context(precision=100, real_prec=Default, imag_prec=Default,
170          round=RoundToNearest, real_round=Default, imag_round=Default,
171          emax=1073741823, emin=-1073741823,
172          subnormalize=False,
173          trap_underflow=False, underflow=False,
174          trap_overflow=False, overflow=False,
175          trap_inexact=False, inexact=False,
176          trap_invalid=False, invalid=False,
177          trap_erange=False, erange=False,
178          trap_divzero=False, divzero=False,
179          allow_complex=False,
180          rational_division=False)
181  >>> b=a.copy()
182  >>> b.precision=200
183  >>> b
184  context(precision=200, real_prec=Default, imag_prec=Default,
185          round=RoundToNearest, real_round=Default, imag_round=Default,
186          emax=1073741823, emin=-1073741823,
187          subnormalize=False,
188          trap_underflow=False, underflow=False,
189          trap_overflow=False, overflow=False,
190          trap_inexact=False, inexact=False,
191          trap_invalid=False, invalid=False,
192          trap_erange=False, erange=False,
193          trap_divzero=False, divzero=False,
194          allow_complex=False,
195          rational_division=False)
196  >>> a
197  context(precision=100, real_prec=Default, imag_prec=Default,
198          round=RoundToNearest, real_round=Default, imag_round=Default,
199          emax=1073741823, emin=-1073741823,
200          subnormalize=False,
201          trap_underflow=False, underflow=False,
202          trap_overflow=False, overflow=False,
203          trap_inexact=False, inexact=False,
204          trap_invalid=False, invalid=False,
205          trap_erange=False, erange=False,
206          trap_divzero=False, divzero=False,
207          allow_complex=False,
208          rational_division=False)
209  >>> get_context()
210  context(precision=100, real_prec=Default, imag_prec=Default,
211          round=RoundToNearest, real_round=Default, imag_round=Default,
212          emax=1073741823, emin=-1073741823,
213          subnormalize=False,
214          trap_underflow=False, underflow=False,
215          trap_overflow=False, overflow=False,
216          trap_inexact=False, inexact=False,
217          trap_invalid=False, invalid=False,
218          trap_erange=False, erange=False,
219          trap_divzero=False, divzero=False,
220          allow_complex=False,
221          rational_division=False)
222  
223  Test local_context()
224  --------------------
225  
226  >>> set_context(context())
227  >>> with local_context() as ctx:
228  ...   print(ctx.precision)
229  ...   ctx.precision+=20
230  ...   print(ctx.precision)
231  ...
232  53
233  73
234  >>> get_context()
235  context(precision=53, real_prec=Default, imag_prec=Default,
236          round=RoundToNearest, real_round=Default, imag_round=Default,
237          emax=1073741823, emin=-1073741823,
238          subnormalize=False,
239          trap_underflow=False, underflow=False,
240          trap_overflow=False, overflow=False,
241          trap_inexact=False, inexact=False,
242          trap_invalid=False, invalid=False,
243          trap_erange=False, erange=False,
244          trap_divzero=False, divzero=False,
245          allow_complex=False,
246          rational_division=False)
247  >>> with local_context(ieee(64)) as ctx:
248  ...   print(ctx)
249  ...
250  context(precision=53, real_prec=Default, imag_prec=Default,
251          round=RoundToNearest, real_round=Default, imag_round=Default,
252          emax=1024, emin=-1073,
253          subnormalize=True,
254          trap_underflow=False, underflow=False,
255          trap_overflow=False, overflow=False,
256          trap_inexact=False, inexact=False,
257          trap_invalid=False, invalid=False,
258          trap_erange=False, erange=False,
259          trap_divzero=False, divzero=False,
260          allow_complex=False,
261          rational_division=False)
262  >>> get_context()
263  context(precision=53, real_prec=Default, imag_prec=Default,
264          round=RoundToNearest, real_round=Default, imag_round=Default,
265          emax=1073741823, emin=-1073741823,
266          subnormalize=False,
267          trap_underflow=False, underflow=False,
268          trap_overflow=False, overflow=False,
269          trap_inexact=False, inexact=False,
270          trap_invalid=False, invalid=False,
271          trap_erange=False, erange=False,
272          trap_divzero=False, divzero=False,
273          allow_complex=False,
274          rational_division=False)
275  >>> with get_context() as ctx:
276  ...   print(ctx.precision)
277  ...   ctx.precision+=100
278  ...   print(ctx.precision)
279  ...
280  53
281  153
282  >>> get_context()
283  context(precision=53, real_prec=Default, imag_prec=Default,
284          round=RoundToNearest, real_round=Default, imag_round=Default,
285          emax=1073741823, emin=-1073741823,
286          subnormalize=False,
287          trap_underflow=False, underflow=False,
288          trap_overflow=False, overflow=False,
289          trap_inexact=False, inexact=False,
290          trap_invalid=False, invalid=False,
291          trap_erange=False, erange=False,
292          trap_divzero=False, divzero=False,
293          allow_complex=False,
294          rational_division=False)
295  >>> with local_context(precision=200) as ctx:
296  ...   print(ctx.precision)
297  ...   ctx.precision+=100
298  ...   print(ctx.precision)
299  ...
300  200
301  300
302  >>> get_context()
303  context(precision=53, real_prec=Default, imag_prec=Default,
304          round=RoundToNearest, real_round=Default, imag_round=Default,
305          emax=1073741823, emin=-1073741823,
306          subnormalize=False,
307          trap_underflow=False, underflow=False,
308          trap_overflow=False, overflow=False,
309          trap_inexact=False, inexact=False,
310          trap_invalid=False, invalid=False,
311          trap_erange=False, erange=False,
312          trap_divzero=False, divzero=False,
313          allow_complex=False,
314          rational_division=False)
315  
316