Reorder expression of better accuracy #17
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.
I think there is a typo in
sincos.h
that dramatically increases error for thesin
andcos
functions by parenthesizing an expression the wrong way. You can see a more detailed exploration in https://github.com/IanBriggs/vdt_cos_error, but in short, insincos.h
, line 123 is:This adds
1.0
and-zz * .5
together first, but it's more accurate to go from smallest to largest magnitude, like this:This cuts the worst case error approximately in half for$[0, \frac{\pi}{2}]$ .
fast_cos
on the domainHere's a plot of error values versus MPFR over this interval: