summaryrefslogtreecommitdiffstatshomepage
path: root/tests/float/float_format_ints_doubleprec.py
diff options
context:
space:
mode:
authorDan Ellis <dpwe@ee.columbia.edu>2022-07-28 10:49:18 -0400
committerDamien George <damien@micropython.org>2022-08-12 23:53:34 +1000
commit6f4d424f461bede1afb69637763f4fce5f27cd90 (patch)
treecb1cb0273073f9ca3d416a721b36f4850d59e3cd /tests/float/float_format_ints_doubleprec.py
parent6cd2e4191803e95580bdfc57c06ea818454a25d1 (diff)
downloadmicropython-6f4d424f461bede1afb69637763f4fce5f27cd90.tar.gz
micropython-6f4d424f461bede1afb69637763f4fce5f27cd90.zip
py/formatfloat: Use pow(10, e) instead of pos/neg_pow lookup tables.
Rework the conversion of floats to decimal strings so it aligns precisely with the conversion of strings to floats in parsenum.c. This is to avoid rendering 1eX as 9.99999eX-1 etc. This is achieved by removing the power- of-10 tables and using pow() to compute the exponent directly, and that's done efficiently by first estimating the power-of-10 exponent from the power-of-2 exponent in the floating-point representation. Code size is reduced by roughly 100 to 200 bytes by this commit. Signed-off-by: Dan Ellis <dan.ellis@gmail.com>
Diffstat (limited to 'tests/float/float_format_ints_doubleprec.py')
-rw-r--r--tests/float/float_format_ints_doubleprec.py3
1 files changed, 3 insertions, 0 deletions
diff --git a/tests/float/float_format_ints_doubleprec.py b/tests/float/float_format_ints_doubleprec.py
index 57899d6d65..67101d3e45 100644
--- a/tests/float/float_format_ints_doubleprec.py
+++ b/tests/float/float_format_ints_doubleprec.py
@@ -13,3 +13,6 @@ v1 = 0x54B249AD2594C37D # 1e100
v2 = 0x6974E718D7D7625A # 1e200
print("{:.12e}".format(array.array("d", v1.to_bytes(8, sys.byteorder))[0]))
print("{:.12e}".format(array.array("d", v2.to_bytes(8, sys.byteorder))[0]))
+
+for i in range(300):
+ print(float("1e" + str(i)))