\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)} \le 2.696758195644417099856582353822886943817:\\
\;\;\;\;\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) \cdot \sqrt[3]{\frac{\tan \left(\frac{x}{y \cdot 2}\right)}{\sin \left(\frac{x}{y \cdot 2}\right)}}\\
\mathbf{else}:\\
\;\;\;\;1\\
\end{array}double f(double x, double y) {
double r349515 = x;
double r349516 = y;
double r349517 = 2.0;
double r349518 = r349516 * r349517;
double r349519 = r349515 / r349518;
double r349520 = tan(r349519);
double r349521 = sin(r349519);
double r349522 = r349520 / r349521;
return r349522;
}
double f(double x, double y) {
double r349523 = x;
double r349524 = y;
double r349525 = 2.0;
double r349526 = r349524 * r349525;
double r349527 = r349523 / r349526;
double r349528 = tan(r349527);
double r349529 = sin(r349527);
double r349530 = r349528 / r349529;
double r349531 = 2.696758195644417;
bool r349532 = r349530 <= r349531;
double r349533 = cbrt(r349530);
double r349534 = r349533 * r349533;
double r349535 = r349534 * r349533;
double r349536 = 1.0;
double r349537 = r349532 ? r349535 : r349536;
return r349537;
}




Bits error versus x




Bits error versus y
Results
| Original | 35.9 |
|---|---|
| Target | 28.9 |
| Herbie | 27.8 |
if (/ (tan (/ x (* y 2.0))) (sin (/ x (* y 2.0)))) < 2.696758195644417Initial program 25.1
rmApplied add-cube-cbrt25.1
if 2.696758195644417 < (/ (tan (/ x (* y 2.0))) (sin (/ x (* y 2.0)))) Initial program 62.7
Taylor expanded around 0 34.5
Final simplification27.8
herbie shell --seed 2019212 +o rules:numerics
(FPCore (x y)
:name "Diagrams.TwoD.Layout.CirclePacking:approxRadius from diagrams-contrib-1.3.0.5"
:precision binary64
:herbie-target
(if (< y -1.23036909113069936e114) 1 (if (< y -9.1028524068119138e-222) (/ (sin (/ x (* y 2))) (* (sin (/ x (* y 2))) (log (exp (cos (/ x (* y 2))))))) 1))
(/ (tan (/ x (* y 2))) (sin (/ x (* y 2)))))