x - \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;y \cdot \left(z - t\right) \le -1.909546477474763351425656643953541951836 \cdot 10^{219}:\\
\;\;\;\;x - \frac{y}{\frac{a}{z - t}}\\
\mathbf{elif}\;y \cdot \left(z - t\right) \le 9.346814402829446941667508921526282193068 \cdot 10^{281}:\\
\;\;\;\;x - \frac{y \cdot \left(z - t\right)}{a}\\
\mathbf{else}:\\
\;\;\;\;x - y \cdot \left(\frac{z}{a} - \frac{t}{a}\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r250550 = x;
double r250551 = y;
double r250552 = z;
double r250553 = t;
double r250554 = r250552 - r250553;
double r250555 = r250551 * r250554;
double r250556 = a;
double r250557 = r250555 / r250556;
double r250558 = r250550 - r250557;
return r250558;
}
double f(double x, double y, double z, double t, double a) {
double r250559 = y;
double r250560 = z;
double r250561 = t;
double r250562 = r250560 - r250561;
double r250563 = r250559 * r250562;
double r250564 = -1.9095464774747634e+219;
bool r250565 = r250563 <= r250564;
double r250566 = x;
double r250567 = a;
double r250568 = r250567 / r250562;
double r250569 = r250559 / r250568;
double r250570 = r250566 - r250569;
double r250571 = 9.346814402829447e+281;
bool r250572 = r250563 <= r250571;
double r250573 = r250563 / r250567;
double r250574 = r250566 - r250573;
double r250575 = r250560 / r250567;
double r250576 = r250561 / r250567;
double r250577 = r250575 - r250576;
double r250578 = r250559 * r250577;
double r250579 = r250566 - r250578;
double r250580 = r250572 ? r250574 : r250579;
double r250581 = r250565 ? r250570 : r250580;
return r250581;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 6.0 |
|---|---|
| Target | 0.8 |
| Herbie | 0.4 |
if (* y (- z t)) < -1.9095464774747634e+219Initial program 31.2
rmApplied associate-/l*0.8
if -1.9095464774747634e+219 < (* y (- z t)) < 9.346814402829447e+281Initial program 0.3
if 9.346814402829447e+281 < (* y (- z t)) Initial program 50.1
rmApplied add-cube-cbrt50.3
Applied times-frac0.9
Taylor expanded around 0 50.1
Simplified0.2
Final simplification0.4
herbie shell --seed 2019306
(FPCore (x y z t a)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, F"
:precision binary64
:herbie-target
(if (< y -1.07612662163899753e-10) (- x (/ 1 (/ (/ a (- z t)) y))) (if (< y 2.8944268627920891e-49) (- x (/ (* y (- z t)) a)) (- x (/ y (/ a (- z t))))))
(- x (/ (* y (- z t)) a)))