
Floating-Point Determinism (2013) - pietroglyph
https://randomascii.wordpress.com/2013/07/16/floating-point-determinism/
======
strainer
I rewrote the main trig functions in Javascript to help with cross browser
determinism. They run as quickly as the native math routines while
compromising accuracy to around 10 significant digits.

[https://github.com/strainer/trigfills](https://github.com/strainer/trigfills)

------
ch33zer
Excellent article. It's so easy to think "same inputs = same outputs" but
that's such a simplification. There's so much more in between!

------
gbrown_
For anyone interested in this sort of thing you'd probably also be interested
in John Gustafson's work on unums/posits. Here's a nice introductory
presentation
[https://www.youtube.com/watch?v=aP0Y1uAA-2Y](https://www.youtube.com/watch?v=aP0Y1uAA-2Y)

------
olliej
I’m glad it pointed to the article of the terrible accuracy of the x87 trig
functions - the OS X and I assume GCC software implementations are ostensibly
correctly accurate, which I think is done by using witchcraft. (More precisely
I think they do it using infinite precision Pi?)

~~~
brucedawson
Correctly rounded trig functions requires great care, and some way of knowing
how much precision you need for the calculations. Doing all of the
calculations at the maximum needed precision would be hugely inefficient. A
high-precision version of Pi is just one of the things needed.

~~~
olliej
What I had been told was that they commuted "as if" they had infinite
precision pi (rather than reduction modulo some approximation)

