math: powf: make a precision vs size trade-off for flash-constrained builds #3245
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
.. by calculating x**y as exp(y*log(x)) after some suitable initial tests.
Size savings is 1352 bytes on Trinket M0, and the existing more accurate behavior is preserved on boards with CIRCUITPY_FULL_BUILD.
The most notable anomaly I found is that powf() is used in number parsing and it changes from the correct
to the incorrect
I investigated whether "exponentiation by squaring" gave more accurate results for integer exponents, but it did not.
New behavior:
Original behavior:
Desktop Python behavior: