Author: Carl Friedrich Bolz-Tereick <cfb...@gmx.de> Branch: math-improvements Changeset: r95454:0e5c477cc330 Date: 2018-12-12 11:51 +0100 http://bitbucket.org/pypy/pypy/changeset/0e5c477cc330/
Log: slightly more careful testing of three-operand pow diff --git a/rpython/rlib/test/test_rbigint.py b/rpython/rlib/test/test_rbigint.py --- a/rpython/rlib/test/test_rbigint.py +++ b/rpython/rlib/test/test_rbigint.py @@ -189,36 +189,43 @@ def test_pow(self): for op1 in gen_signs(long_vals_not_too_big): + rl_op1 = rbigint.fromlong(op1) for op2 in [0, 1, 2, 8, 9, 10, 11]: - rl_op1 = rbigint.fromlong(op1) rl_op2 = rbigint.fromint(op2) r1 = rl_op1.pow(rl_op2) r2 = op1 ** op2 assert r1.tolong() == r2 - r3 = rl_op1.int_pow(op2, rbigint.fromint(1000)) - r4 = pow(op1, op2, 1000) - print op1, op2 - assert r3.tolong() == r4 + for op3 in gen_signs([1, 2, 5, 1000, 12312312312312235659969696l]): + if not op3: + continue + print op1, op2, op3 + r3 = rl_op1.pow(rl_op2, rbigint.fromlong(op3)) + r4 = pow(op1, op2, op3) + assert r3.tolong() == r4 def test_int_pow(self): - for op1 in gen_signs(long_vals_not_too_big[:-2]): - for op2 in [0, 1, 2, 8, 9, 10, 11]: - rl_op1 = rbigint.fromlong(op1) + for op1 in gen_signs(long_vals_not_too_big): + rl_op1 = rbigint.fromlong(op1) + for op2 in [0, 1, 2, 8, 9, 10, 11, 127, 128, 129]: r1 = rl_op1.int_pow(op2) r2 = op1 ** op2 assert r1.tolong() == r2 - r3 = rl_op1.int_pow(op2, rbigint.fromint(1000)) - r4 = pow(op1, op2, 1000) - print op1, op2 - assert r3.tolong() == r4 + for op3 in gen_signs(long_vals_not_too_big): + if not op3: + continue + r3 = rl_op1.int_pow(op2, rbigint.fromlong(op3)) + r4 = pow(op1, op2, op3) + print op1, op2, op3 + assert r3.tolong() == r4 def test_pow_raises(self): r1 = rbigint.fromint(2) r0 = rbigint.fromint(0) py.test.raises(ValueError, r1.int_pow, 2, r0) py.test.raises(ValueError, r1.pow, r1, r0) + def test_touint(self): result = r_uint(sys.maxint + 42) rl = rbigint.fromint(sys.maxint).add(rbigint.fromint(42)) @@ -865,7 +872,7 @@ y += randint(1, 1 << 60) if y > x: x <<= 100 - + f1 = rbigint.fromlong(x) f2 = rbigint.fromlong(y) div, rem = lobj._x_divrem(f1, f2) _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit