\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 26.797912368648007:\\
\;\;\;\;\sqrt[3]{\frac{\tan \left(\frac{x}{y \cdot 2}\right)}{\sin \left(\frac{x}{y \cdot 2}\right)}} \cdot \left(\sqrt[3]{\frac{\tan \left(\frac{x}{y \cdot 2}\right)}{\sin \left(\frac{x}{y \cdot 2}\right)}} \cdot \sqrt[3]{\frac{\tan \left(\frac{x}{y \cdot 2}\right)}{\sin \left(\frac{x}{y \cdot 2}\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)))) 26.797912368648007)
(*
(cbrt (/ (tan (/ x (* y 2.0))) (sin (/ x (* y 2.0)))))
(*
(cbrt (/ (tan (/ x (* y 2.0))) (sin (/ x (* y 2.0)))))
(cbrt (/ (tan (/ x (* y 2.0))) (sin (/ x (* y 2.0)))))))
1.0))double code(double x, double y) {
return (((double) tan((x / ((double) (y * 2.0))))) / ((double) sin((x / ((double) (y * 2.0))))));
}
double code(double x, double y) {
double tmp;
if (((((double) tan((x / ((double) (y * 2.0))))) / ((double) sin((x / ((double) (y * 2.0)))))) <= 26.797912368648007)) {
tmp = ((double) (((double) cbrt((((double) tan((x / ((double) (y * 2.0))))) / ((double) sin((x / ((double) (y * 2.0)))))))) * ((double) (((double) cbrt((((double) tan((x / ((double) (y * 2.0))))) / ((double) sin((x / ((double) (y * 2.0)))))))) * ((double) cbrt((((double) tan((x / ((double) (y * 2.0))))) / ((double) sin((x / ((double) (y * 2.0))))))))))));
} else {
tmp = 1.0;
}
return tmp;
}




Bits error versus x




Bits error versus y
Results
| Original | 36.3 |
|---|---|
| Target | 29.4 |
| Herbie | 28.1 |
if (/ (tan (/ x (* y 2.0))) (sin (/ x (* y 2.0)))) < 26.797912368648007Initial program Error: 27.5 bits
rmApplied add-cube-cbrtError: 27.5 bits
if 26.797912368648007 < (/ (tan (/ x (* y 2.0))) (sin (/ x (* y 2.0)))) Initial program Error: 63.9 bits
Taylor expanded around 0 Error: 30.1 bits
Final simplificationError: 28.1 bits
herbie shell --seed 2020203
(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)))))