\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 9.643098511725562:\\
\;\;\;\;\frac{\sin \left(\frac{x}{y \cdot 2}\right)}{\sin \left(\frac{x}{y \cdot 2}\right) \cdot \log \left(e^{\sqrt[3]{\cos \left(\frac{x}{y \cdot 2}\right)} \cdot \left(\sqrt[3]{\cos \left(\frac{x}{y \cdot 2}\right)} \cdot \sqrt[3]{\cos \left(\frac{x}{y \cdot 2}\right)}\right)}\right)}\\
\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)))) 9.643098511725562)
(/
(sin (/ x (* y 2.0)))
(*
(sin (/ x (* y 2.0)))
(log
(exp
(*
(cbrt (cos (/ x (* y 2.0))))
(* (cbrt (cos (/ x (* y 2.0)))) (cbrt (cos (/ x (* y 2.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))) <= 9.643098511725562) {
tmp = sin(x / (y * 2.0)) / (sin(x / (y * 2.0)) * log(exp(cbrt(cos(x / (y * 2.0))) * (cbrt(cos(x / (y * 2.0))) * cbrt(cos(x / (y * 2.0)))))));
} else {
tmp = 1.0;
}
return tmp;
}




Bits error versus x




Bits error versus y
Results
| Original | 35.1 |
|---|---|
| Target | 28.7 |
| Herbie | 27.4 |
if (/.f64 (tan.f64 (/.f64 x (*.f64 y 2))) (sin.f64 (/.f64 x (*.f64 y 2)))) < 9.6430985117255617Initial program 26.1
rmApplied tan-quot_binary6426.1
Applied associate-/l/_binary6426.1
rmApplied add-log-exp_binary6426.1
rmApplied add-cube-cbrt_binary6426.1
if 9.6430985117255617 < (/.f64 (tan.f64 (/.f64 x (*.f64 y 2))) (sin.f64 (/.f64 x (*.f64 y 2)))) Initial program 63.5
Taylor expanded around 0 31.6
Final simplification27.4
herbie shell --seed 2020219
(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)))))