x + \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;a \le -3.645255194916715937641968772702949461824 \cdot 10^{-56}:\\
\;\;\;\;x - \left(\frac{t}{a} - \frac{z}{a}\right) \cdot y\\
\mathbf{elif}\;a \le 11441004867780468335951397958707827651380000:\\
\;\;\;\;x - \frac{y \cdot \left(t - z\right)}{a}\\
\mathbf{else}:\\
\;\;\;\;x - \left(t \cdot \frac{1}{\frac{a}{y}} - \frac{z}{\frac{a}{y}}\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r262604 = x;
double r262605 = y;
double r262606 = z;
double r262607 = t;
double r262608 = r262606 - r262607;
double r262609 = r262605 * r262608;
double r262610 = a;
double r262611 = r262609 / r262610;
double r262612 = r262604 + r262611;
return r262612;
}
double f(double x, double y, double z, double t, double a) {
double r262613 = a;
double r262614 = -3.645255194916716e-56;
bool r262615 = r262613 <= r262614;
double r262616 = x;
double r262617 = t;
double r262618 = r262617 / r262613;
double r262619 = z;
double r262620 = r262619 / r262613;
double r262621 = r262618 - r262620;
double r262622 = y;
double r262623 = r262621 * r262622;
double r262624 = r262616 - r262623;
double r262625 = 1.1441004867780468e+43;
bool r262626 = r262613 <= r262625;
double r262627 = r262617 - r262619;
double r262628 = r262622 * r262627;
double r262629 = r262628 / r262613;
double r262630 = r262616 - r262629;
double r262631 = 1.0;
double r262632 = r262613 / r262622;
double r262633 = r262631 / r262632;
double r262634 = r262617 * r262633;
double r262635 = r262619 / r262632;
double r262636 = r262634 - r262635;
double r262637 = r262616 - r262636;
double r262638 = r262626 ? r262630 : r262637;
double r262639 = r262615 ? r262624 : r262638;
return r262639;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 5.9 |
|---|---|
| Target | 0.7 |
| Herbie | 1.3 |
if a < -3.645255194916716e-56Initial program 8.3
Simplified1.5
rmApplied add-cube-cbrt1.9
Applied associate-*r*1.9
Simplified1.9
rmApplied add-cube-cbrt1.9
Applied cbrt-prod1.9
Taylor expanded around 0 8.3
Simplified1.6
rmApplied *-un-lft-identity1.6
Applied *-un-lft-identity1.6
Applied times-frac1.6
Applied *-un-lft-identity1.6
Applied times-frac1.6
Applied *-un-lft-identity1.6
Applied *-un-lft-identity1.6
Applied times-frac1.6
Applied *-un-lft-identity1.6
Applied times-frac1.6
Applied distribute-lft-out--1.6
Simplified0.8
if -3.645255194916716e-56 < a < 1.1441004867780468e+43Initial program 1.2
Simplified4.1
rmApplied associate-*l/1.2
if 1.1441004867780468e+43 < a Initial program 9.6
Simplified2.1
rmApplied add-cube-cbrt2.4
Applied associate-*r*2.4
Simplified2.4
rmApplied add-cube-cbrt2.4
Applied cbrt-prod2.5
Taylor expanded around 0 9.6
Simplified2.2
rmApplied div-inv2.3
Final simplification1.3
herbie shell --seed 2019194
(FPCore (x y z t a)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, E"
:herbie-target
(if (< y -1.0761266216389975e-10) (+ x (/ 1.0 (/ (/ a (- z t)) y))) (if (< y 2.894426862792089e-49) (+ x (/ (* y (- z t)) a)) (+ x (/ y (/ a (- z t))))))
(+ x (/ (* y (- z t)) a)))