\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 1.39022469843956054:\\
\;\;\;\;\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 r615551 = x;
double r615552 = y;
double r615553 = 2.0;
double r615554 = r615552 * r615553;
double r615555 = r615551 / r615554;
double r615556 = tan(r615555);
double r615557 = sin(r615555);
double r615558 = r615556 / r615557;
return r615558;
}
double f(double x, double y) {
double r615559 = x;
double r615560 = y;
double r615561 = 2.0;
double r615562 = r615560 * r615561;
double r615563 = r615559 / r615562;
double r615564 = tan(r615563);
double r615565 = sin(r615563);
double r615566 = r615564 / r615565;
double r615567 = 1.3902246984395605;
bool r615568 = r615566 <= r615567;
double r615569 = cbrt(r615566);
double r615570 = r615569 * r615569;
double r615571 = r615570 * r615569;
double r615572 = 1.0;
double r615573 = r615568 ? r615571 : r615572;
return r615573;
}




Bits error versus x




Bits error versus y
Results
| Original | 35.9 |
|---|---|
| Target | 29.0 |
| Herbie | 27.8 |
if (/ (tan (/ x (* y 2.0))) (sin (/ x (* y 2.0)))) < 1.3902246984395605Initial program 23.2
rmApplied add-cube-cbrt23.2
if 1.3902246984395605 < (/ (tan (/ x (* y 2.0))) (sin (/ x (* y 2.0)))) Initial program 61.4
Taylor expanded around 0 36.9
Final simplification27.8
herbie shell --seed 2020020
(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 (if (< y -9.102852406811914e-222) (/ (sin (/ x (* y 2))) (* (sin (/ x (* y 2))) (log (exp (cos (/ x (* y 2))))))) 1))
(/ (tan (/ x (* y 2))) (sin (/ x (* y 2)))))