From 06201ff3d6d9485b2657fc9ac4aa8a306884322f Mon Sep 17 00:00:00 2001 From: Damien George Date: Sat, 1 Mar 2014 19:50:50 +0000 Subject: py: Implement bit-shift and not operations for mpz. Implement not, shl and shr in mpz library. Add function to create mpzs on the stack, used for memory efficiency when rhs is a small int. Factor out code to parse base-prefix of number into a dedicated function. --- tests/basics/int-mpz.py | 57 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 tests/basics/int-mpz.py (limited to 'tests/basics/int-mpz.py') diff --git a/tests/basics/int-mpz.py b/tests/basics/int-mpz.py new file mode 100644 index 0000000000..0500d794cf --- /dev/null +++ b/tests/basics/int-mpz.py @@ -0,0 +1,57 @@ +# to test arbitrariy precision integers + +x = 1000000000000000000000000000000 +y = 2000000000000000000000000000000 + +# printing +print(x) +print(y) + +# addition +print(x + 1) +print(x + y) + +# subtraction +print(x - 1) +print(x - y) +print(y - x) + +# multiplication +print(x * 2) +print(x * y) + +# integer division +print(x // 2) +print(y // x) + +# bit inversion +print(~x) +print(~(-x)) + +# left shift +x = 0x10000000000000000000000 +for i in range(32): + x = x << 1 + print(x) + +# right shift +x = 0x10000000000000000000000 +for i in range(32): + x = x >> 1 + print(x) + +# left shift of a negative number +for i in range(8): + print(-10000000000000000000000000 << i) + print(-10000000000000000000000001 << i) + print(-10000000000000000000000002 << i) + print(-10000000000000000000000003 << i) + print(-10000000000000000000000004 << i) + +# right shift of a negative number +for i in range(8): + print(-10000000000000000000000000 >> i) + print(-10000000000000000000000001 >> i) + print(-10000000000000000000000002 >> i) + print(-10000000000000000000000003 >> i) + print(-10000000000000000000000004 >> i) -- cgit v1.2.3