double code(double v) {
return ((double) acos(((double) (((double) (1.0 - ((double) (5.0 * ((double) (v * v)))))) / ((double) (((double) (v * v)) - 1.0))))));
}
double code(double v) {
return ((double) acos(((double) (((double) (v * ((double) (((double) (v + ((double) pow(v, 3.0)))) * 4.0)))) - 1.0))));
}



Bits error versus v
Results
Initial program 0.6
Taylor expanded around 0 0.8
Simplified0.8
Final simplification0.8
herbie shell --seed 2020191
(FPCore (v)
:name "Falkner and Boettcher, Appendix B, 1"
:precision binary64
(acos (/ (- 1.0 (* 5.0 (* v v))) (- (* v v) 1.0))))