diff options
author | Damien George <damien.p.george@gmail.com> | 2014-09-13 19:58:18 +0100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-09-13 19:58:18 +0100 |
commit | 83695596ed4fe3ad990b68cc5ff52c26caf2174d (patch) | |
tree | ed56b5df87a3c1837ee55808643fe2738c1124e1 /tests/float/float_divmod_relaxed.py | |
parent | 8594ce228011e6264f59ade4ff8a7f2bfa90a649 (diff) | |
download | micropython-83695596ed4fe3ad990b68cc5ff52c26caf2174d.tar.gz micropython-83695596ed4fe3ad990b68cc5ff52c26caf2174d.zip |
py: Fix build error when float disabled; add test for divmod.
Diffstat (limited to 'tests/float/float_divmod_relaxed.py')
-rw-r--r-- | tests/float/float_divmod_relaxed.py | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/float/float_divmod_relaxed.py b/tests/float/float_divmod_relaxed.py new file mode 100644 index 0000000000..7054d2ca67 --- /dev/null +++ b/tests/float/float_divmod_relaxed.py @@ -0,0 +1,27 @@ +# test floating point floor divide and modulus +# it has some tricky corner cases + +# pyboard has 32-bit floating point and gives different (but still +# correct) answers for certain combinations of divmod arguments. + +def test(x, y): + div, mod = divmod(x, y) + print(div == x // y, mod == x % y, abs(div * y + mod - x) < 1e-6) + +test(1.23456, 0.7) +test(-1.23456, 0.7) +test(1.23456, -0.7) +test(-1.23456, -0.7) + +a = 1.23456 +b = 0.7 +test(a, b) +test(a, -b) +test(-a, b) +test(-a, -b) + +for i in range(25): + x = (i - 12.5) / 6 + for j in range(25): + y = (j - 12.5) / 6 + test(x, y) |