\frac{\tan \left(\frac{x}{y \cdot 2}\right)}{\sin \left(\frac{x}{y \cdot 2}\right)}\begin{array}{l}
\mathbf{if}\;\frac{\tan \left(\frac{x}{y \cdot 2}\right)}{\sin \left(\frac{x}{y \cdot 2}\right)} \leq 1.7176494035023464:\\
\;\;\;\;\sqrt[3]{{\left(\frac{\frac{\sin \left(\frac{x}{y \cdot 2}\right)}{\cos \left(\frac{x}{y \cdot 2}\right)}}{\sin \left(\frac{x}{y \cdot 2}\right)}\right)}^{3}}\\
\mathbf{else}:\\
\;\;\;\;1\\
\end{array}(FPCore (x y) :precision binary64 (/ (tan (/ x (* y 2.0))) (sin (/ x (* y 2.0)))))
(FPCore (x y)
:precision binary64
(if (<= (/ (tan (/ x (* y 2.0))) (sin (/ x (* y 2.0)))) 1.7176494035023464)
(cbrt
(pow
(/ (/ (sin (/ x (* y 2.0))) (cos (/ x (* y 2.0)))) (sin (/ x (* y 2.0))))
3.0))
1.0))double code(double x, double y) {
return tan(x / (y * 2.0)) / sin(x / (y * 2.0));
}
double code(double x, double y) {
double tmp;
if ((tan(x / (y * 2.0)) / sin(x / (y * 2.0))) <= 1.7176494035023464) {
tmp = cbrt(pow(((sin(x / (y * 2.0)) / cos(x / (y * 2.0))) / sin(x / (y * 2.0))), 3.0));
} else {
tmp = 1.0;
}
return tmp;
}




Bits error versus x




Bits error versus y
Results
| Original | 35.4 |
|---|---|
| Target | 29.1 |
| Herbie | 27.6 |
if (/.f64 (tan.f64 (/.f64 x (*.f64 y 2))) (sin.f64 (/.f64 x (*.f64 y 2)))) < 1.7176494035023464Initial program 23.8
rmApplied add-cbrt-cube_binary64_1818723.8
Simplified23.8
rmApplied tan-quot_binary64_1831023.8
if 1.7176494035023464 < (/.f64 (tan.f64 (/.f64 x (*.f64 y 2))) (sin.f64 (/.f64 x (*.f64 y 2)))) Initial program 62.0
Taylor expanded around 0 36.4
Final simplification27.6
herbie shell --seed 2020342
(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)))))