summaryrefslogtreecommitdiffstatshomepage
path: root/tests/float/float_parse.py
Commit message (Collapse)AuthorAge
* tests: Format all Python code with black, except tests in basics subdir.David Lechner2020-03-30
| | | | | | | | | | This adds the Python files in the tests/ directory to be formatted with ./tools/codeformat.py. The basics/ subdirectory is excluded for now so we aren't changing too much at once. In a few places `# fmt: off`/`# fmt: on` was used where the code had special formatting for readability or where the test was actually testing the specific formatting.
* tests/float/float_parse.py: Add tests for accuracy of small decimals.Damien George2018-09-20
|
* tests: Add some tests for bigint hash, float hash and float parsing.Damien George2018-05-21
| | | | Following outcome of recent fuzz testing and sanitizing by @jepler.
* tests/float/float_parse: Allow test to run on 32-bit archs.Damien George2018-05-11
| | | | | | | Printing of uPy floats can differ by the floating-point precision on different architectures (eg 64-bit vs 32-bit x86), so it's not possible to using printing of floats in some parts of this test. Instead we can just check for equivalence with what is known to be the correct answer.
* tests/float: Adjust float-parsing tests to pass with only a small error.Damien George2018-02-26
| | | | | | Float parsing (both single and double precision) may have a relative error of order the floating point precision, so adjust tests to take this into account by not printing all of the digits of the answer.
* py/parsenum: Fix parsing of floats that are close to subnormal.Damien George2018-02-08
| | | | | | Prior to this patch, a float literal that was close to subnormal would have a loss of precision when parsed. The worst case was something like float('10000000000000000000e-326') which returned 0.0.
* py/parsenum: Improve parsing of floating point numbers.Damien George2017-11-27
This patch improves parsing of floating point numbers by converting all the digits (integer and fractional) together into a number 1 or greater, and then applying the correct power of 10 at the very end. In particular the multiple "multiply by 0.1" operations to build a fraction are now combined together and applied at the same time as the exponent, at the very end. This helps to retain precision during parsing of floats, and also includes a check that the number doesn't overflow during the parsing. One benefit is that a float will have the same value no matter where the decimal point is located, eg 1.23 == 123e-2.