\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}{2 \cdot y}\right)}{\sin \left(\frac{x}{2 \cdot y}\right)} \le 2.69286171955532038779779213655274361372:\\
\;\;\;\;\sqrt[3]{\left(\frac{\tan \left(\frac{x}{2 \cdot y}\right)}{\sin \left(\frac{x}{2 \cdot y}\right)} \cdot \frac{\tan \left(\frac{x}{2 \cdot y}\right)}{\sin \left(\frac{x}{2 \cdot y}\right)}\right) \cdot \frac{\tan \left(\frac{x}{2 \cdot y}\right)}{\sin \left(\frac{x}{2 \cdot y}\right)}}\\
\mathbf{else}:\\
\;\;\;\;1\\
\end{array}double f(double x, double y) {
double r19456569 = x;
double r19456570 = y;
double r19456571 = 2.0;
double r19456572 = r19456570 * r19456571;
double r19456573 = r19456569 / r19456572;
double r19456574 = tan(r19456573);
double r19456575 = sin(r19456573);
double r19456576 = r19456574 / r19456575;
return r19456576;
}
double f(double x, double y) {
double r19456577 = x;
double r19456578 = 2.0;
double r19456579 = y;
double r19456580 = r19456578 * r19456579;
double r19456581 = r19456577 / r19456580;
double r19456582 = tan(r19456581);
double r19456583 = sin(r19456581);
double r19456584 = r19456582 / r19456583;
double r19456585 = 2.6928617195553204;
bool r19456586 = r19456584 <= r19456585;
double r19456587 = r19456584 * r19456584;
double r19456588 = r19456587 * r19456584;
double r19456589 = cbrt(r19456588);
double r19456590 = 1.0;
double r19456591 = r19456586 ? r19456589 : r19456590;
return r19456591;
}




Bits error versus x




Bits error versus y
Results
| Original | 35.4 |
|---|---|
| Target | 28.9 |
| Herbie | 27.5 |
if (/ (tan (/ x (* y 2.0))) (sin (/ x (* y 2.0)))) < 2.6928617195553204Initial program 24.9
rmApplied clear-num24.9
rmApplied add-cbrt-cube45.0
Applied add-cbrt-cube45.2
Applied cbrt-undiv45.2
Applied add-cbrt-cube45.2
Applied cbrt-undiv45.2
Simplified24.9
if 2.6928617195553204 < (/ (tan (/ x (* y 2.0))) (sin (/ x (* y 2.0)))) Initial program 62.7
Taylor expanded around 0 34.1
Final simplification27.5
herbie shell --seed 2019179
(FPCore (x y)
:name "Diagrams.TwoD.Layout.CirclePacking:approxRadius from diagrams-contrib-1.3.0.5"
: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)))))