\frac{\tan \left(\frac{x}{y \cdot 2}\right)}{\sin \left(\frac{x}{y \cdot 2}\right)}\sqrt[3]{\frac{1}{\cos \left(\frac{x}{y \cdot 2}\right)}} \cdot {\left({\left(\sqrt[3]{\frac{1}{\cos \left(\frac{x}{y \cdot 2}\right)}}\right)}^{6}\right)}^{0.3333333333333333}(FPCore (x y) :precision binary64 (/ (tan (/ x (* y 2.0))) (sin (/ x (* y 2.0)))))
(FPCore (x y) :precision binary64 (* (cbrt (/ 1.0 (cos (/ x (* y 2.0))))) (pow (pow (cbrt (/ 1.0 (cos (/ x (* y 2.0))))) 6.0) 0.3333333333333333)))
double code(double x, double y) {
return tan(x / (y * 2.0)) / sin(x / (y * 2.0));
}
double code(double x, double y) {
return cbrt(1.0 / cos(x / (y * 2.0))) * pow(pow(cbrt(1.0 / cos(x / (y * 2.0))), 6.0), 0.3333333333333333);
}




Bits error versus x




Bits error versus y
Results
| Original | 35.9 |
|---|---|
| Target | 29.5 |
| Herbie | 28.9 |
Initial program 35.9
rmApplied tan-quot_binary6435.9
rmApplied add-cube-cbrt_binary6435.9
Simplified35.9
Simplified28.9
rmApplied pow1/3_binary6430.7
Applied pow1/3_binary6430.7
Applied pow-prod-down_binary6428.9
Simplified28.9
Final simplification28.9
herbie shell --seed 2020220
(FPCore (x y)
:name "Diagrams.TwoD.Layout.CirclePacking:approxRadius from diagrams-contrib-1.3.0.5"
:precision binary64
:herbie-target
(if (< y -1.2303690911306994e+114) 1.0 (if (< y -9.102852406811914e-222) (/ (sin (/ x (* y 2.0))) (* (sin (/ x (* y 2.0))) (log (exp (cos (/ x (* y 2.0))))))) 1.0))
(/ (tan (/ x (* y 2.0))) (sin (/ x (* y 2.0)))))