Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Skip to content
Commit f74f2b5e authored by Hans Boehm's avatar Hans Boehm
Browse files

Extend BoundedRational and UnifiedReal and fix pow(), exp()

Bug: 64852569

Clean up exp() and pow() implementation so that it always
terminates in reasonable time, if the result has reasonable size.
Do not negate the exponent and take the reciprocal of the
result, since that makes some near-zero results extremely
expensive to compute.

Lean more towards using the exp() and ln() implementation
of pow() when there is a choice. The recursive implementation
can be problematic with huge exponents.

Add accurate conversion function from Double.

Improve accuracy of conversion in the other direction. The old version
was prone to just saying NaN or Infinite for rationals with long
representations.

Do something more reasonable about hashCode() and equals() for
these two types, to make them safer to use.

Some minor cleanups, including some minor performance fixes.

A lot of this was driven by attempts to compare UnifiedReal results
to java.lang.Math generated double results.

Test: Ran unit tests (on host only, so far).
Change-Id: If2e47d99841b3b1fec2349acb31608136a71828e
(cherry picked from commit ff47d599ad952853119dbffbe1e4a8ac06924b4a)
parent 551f8cb2
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment