Commit 37566326 authored by Stefan Behnel's avatar Stefan Behnel

Merge branch '0.23.x'

parents 46f684e5 3cf41e14
...@@ -79,15 +79,15 @@ def add_x_large(x): ...@@ -79,15 +79,15 @@ def add_x_large(x):
1073741825.5 1073741825.5
>>> add_x_large(-2.0**31) >>> add_x_large(-2.0**31)
-1073741824.0 -1073741824.0
>>> add_x_large(2**30 + 1) >>> bigint(add_x_large(2**30 + 1))
2147483649 2147483649
>>> bigint(2**50 + 1 + 2**30) >>> bigint(2**50 + 1 + 2**30)
1125900980584449 1125900980584449
>>> bigint(add_x_large(2**50 + 1)) >>> bigint(add_x_large(2**50 + 1))
1125900980584449 1125900980584449
>>> 2**31 + 2**30 >>> bigint(2**31 + 2**30)
3221225472 3221225472
>>> add_x_large(2**31) >>> bigint(add_x_large(2**31))
3221225472 3221225472
>>> bigint(2**66 + 2**30) >>> bigint(2**66 + 2**30)
73786976295911948288 73786976295911948288
......
...@@ -5,20 +5,30 @@ ...@@ -5,20 +5,30 @@
Traceback (most recent call last): Traceback (most recent call last):
NameError: ...name 'THOUSAND' is not defined NameError: ...name 'THOUSAND' is not defined
>>> TWO, THREE, FIVE >>> TWO == 2 or TWO
(2, 3, 5) True
>>> THREE == 3 or THREE
True
>>> FIVE == 5 or FIVE
True
>>> SEVEN # doctest: +ELLIPSIS >>> SEVEN # doctest: +ELLIPSIS
Traceback (most recent call last): Traceback (most recent call last):
NameError: ...name 'SEVEN' is not defined NameError: ...name 'SEVEN' is not defined
>>> FOUR, EIGHT >>> FOUR == 4 or FOUR
(4, 8) True
>>> EIGHT == 8 or EIGHT
True
>>> SIXTEEN # doctest: +ELLIPSIS >>> SIXTEEN # doctest: +ELLIPSIS
Traceback (most recent call last): Traceback (most recent call last):
NameError: ...name 'SIXTEEN' is not defined NameError: ...name 'SIXTEEN' is not defined
>>> RANK_0, RANK_1, RANK_2 >>> RANK_0 == 11 or RANK_0
(11, 37, 389) True
>>> RANK_1 == 37 or RANK_1
True
>>> RANK_2 == 389 or RANK_2
True
>>> RANK_3 # doctest: +ELLIPSIS >>> RANK_3 # doctest: +ELLIPSIS
Traceback (most recent call last): Traceback (most recent call last):
NameError: ...name 'RANK_3' is not defined NameError: ...name 'RANK_3' is not defined
......
...@@ -2,6 +2,12 @@ from __future__ import division ...@@ -2,6 +2,12 @@ from __future__ import division
cimport cython cimport cython
def bigints(values):
for x in values:
print(repr(x).rstrip('L'))
def doit(x,y): def doit(x,y):
""" """
>>> doit(1,2) >>> doit(1,2)
...@@ -47,10 +53,20 @@ def py_mix(a): ...@@ -47,10 +53,20 @@ def py_mix(a):
(0.5, 0.0, 0.5, 0.0, 0.5, 0.0) (0.5, 0.0, 0.5, 0.0, 0.5, 0.0)
>>> 2**53 / 2.0 >>> 2**53 / 2.0
4503599627370496.0 4503599627370496.0
>>> py_mix(2**53) >>> bigints(py_mix(2**53))
(4503599627370496.0, 4503599627370496, 4503599627370496.0, 4503599627370496.0, 4503599627370496.0, 4503599627370496) 4503599627370496.0
>>> py_mix(2**53 + 1) 4503599627370496
(4503599627370496.0, 4503599627370496, 4503599627370496.0, 4503599627370496.0, 4503599627370496.0, 4503599627370496) 4503599627370496.0
4503599627370496.0
4503599627370496.0
4503599627370496
>>> bigints(py_mix(2**53 + 1))
4503599627370496.0
4503599627370496
4503599627370496.0
4503599627370496.0
4503599627370496.0
4503599627370496
>>> py_mix(2**53 + 1.0) >>> py_mix(2**53 + 1.0)
(4503599627370496.0, 4503599627370496.0, 4503599627370496.0, 4503599627370496.0, 4503599627370496.0, 4503599627370496.0) (4503599627370496.0, 4503599627370496.0, 4503599627370496.0, 4503599627370496.0, 4503599627370496.0, 4503599627370496.0)
""" """
...@@ -65,8 +81,13 @@ def py_mix_by_neg1(a): ...@@ -65,8 +81,13 @@ def py_mix_by_neg1(a):
(1.0, 1, 1.0, 1.0, 1.0, 1) (1.0, 1, 1.0, 1.0, 1.0, 1)
>>> py_mix_by_neg1(int(2**31-1)) >>> py_mix_by_neg1(int(2**31-1))
(-2147483647.0, -2147483647, -2147483647.0, -2147483647.0, -2147483647.0, -2147483647) (-2147483647.0, -2147483647, -2147483647.0, -2147483647.0, -2147483647.0, -2147483647)
>>> py_mix_by_neg1(int(-2**31-1)) >>> bigints(py_mix_by_neg1(int(-2**31-1)))
(2147483649.0, 2147483649, 2147483649.0, 2147483649.0, 2147483649.0, 2147483649) 2147483649.0
2147483649
2147483649.0
2147483649.0
2147483649.0
2147483649
>>> results = py_mix_by_neg1(int(2**63-1)) >>> results = py_mix_by_neg1(int(2**63-1))
>>> results[0] == results[2] == results[3] == results[4] == float(2**63-1) / -1.0 or results >>> results[0] == results[2] == results[3] == results[4] == float(2**63-1) / -1.0 or results
True True
......
# Py2.x mixed true-div/floor-div behaviour of '/' operator # Py2.x mixed true-div/floor-div behaviour of '/' operator
def bigints(values):
for x in values:
print(repr(x).rstrip('L'))
def doit(x,y): def doit(x,y):
""" """
>>> doit(1,2) >>> doit(1,2)
...@@ -45,10 +51,20 @@ def py_mix(a): ...@@ -45,10 +51,20 @@ def py_mix(a):
(0.5, 0.0, 0.5, 0.0, 0.5, 0.0) (0.5, 0.0, 0.5, 0.0, 0.5, 0.0)
>>> 2**53 / 2.0 >>> 2**53 / 2.0
4503599627370496.0 4503599627370496.0
>>> py_mix(2**53) >>> bigints(py_mix(2**53))
(4503599627370496, 4503599627370496, 4503599627370496.0, 4503599627370496.0, 4503599627370496, 4503599627370496) 4503599627370496
>>> py_mix(2**53 + 1) 4503599627370496
(4503599627370496, 4503599627370496, 4503599627370496.0, 4503599627370496.0, 4503599627370496, 4503599627370496) 4503599627370496.0
4503599627370496.0
4503599627370496
4503599627370496
>>> bigints(py_mix(2**53 + 1))
4503599627370496
4503599627370496
4503599627370496.0
4503599627370496.0
4503599627370496
4503599627370496
>>> py_mix(2**53 + 1.0) >>> py_mix(2**53 + 1.0)
(4503599627370496.0, 4503599627370496.0, 4503599627370496.0, 4503599627370496.0, 4503599627370496.0, 4503599627370496.0) (4503599627370496.0, 4503599627370496.0, 4503599627370496.0, 4503599627370496.0, 4503599627370496.0, 4503599627370496.0)
""" """
...@@ -63,8 +79,13 @@ def py_mix_by_neg1(a): ...@@ -63,8 +79,13 @@ def py_mix_by_neg1(a):
(1, 1, 1.0, 1.0, 1, 1) (1, 1, 1.0, 1.0, 1, 1)
>>> py_mix_by_neg1(int(2**31-1)) >>> py_mix_by_neg1(int(2**31-1))
(-2147483647, -2147483647, -2147483647.0, -2147483647.0, -2147483647, -2147483647) (-2147483647, -2147483647, -2147483647.0, -2147483647.0, -2147483647, -2147483647)
>>> py_mix_by_neg1(int(-2**31-1)) >>> bigints(py_mix_by_neg1(int(-2**31-1)))
(2147483649, 2147483649, 2147483649.0, 2147483649.0, 2147483649, 2147483649) 2147483649
2147483649
2147483649.0
2147483649.0
2147483649
2147483649
>>> results = py_mix_by_neg1(int(2**63-1)) >>> results = py_mix_by_neg1(int(2**63-1))
>>> results[2] == results[3] == float(2**63-1) / -1.0 or results >>> results[2] == results[3] == float(2**63-1) / -1.0 or results
True True
......
...@@ -175,9 +175,9 @@ def sub_large_x(x): ...@@ -175,9 +175,9 @@ def sub_large_x(x):
1073741823 1073741823
>>> sub_large_x(2**30) >>> sub_large_x(2**30)
0 0
>>> 2**30 - 2**31 >>> bigint(2**30 - 2**31)
-1073741824 -1073741824
>>> sub_large_x(2**31) >>> bigint(sub_large_x(2**31))
-1073741824 -1073741824
>>> sub_large_x(2.0**30) >>> sub_large_x(2.0**30)
0.0 0.0
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment