x - \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;z - t \le -8.381032267864286848111598473235001808927 \cdot 10^{-13} \lor \neg \left(z - t \le 2.979324857395300632013474840610844551682 \cdot 10^{-117}\right):\\
\;\;\;\;x - \frac{y}{a} \cdot \left(z - t\right)\\
\mathbf{else}:\\
\;\;\;\;x - \left(\frac{\sqrt[3]{y}}{a} \cdot \left(z - t\right)\right) \cdot \left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r250419 = x;
double r250420 = y;
double r250421 = z;
double r250422 = t;
double r250423 = r250421 - r250422;
double r250424 = r250420 * r250423;
double r250425 = a;
double r250426 = r250424 / r250425;
double r250427 = r250419 - r250426;
return r250427;
}
double f(double x, double y, double z, double t, double a) {
double r250428 = z;
double r250429 = t;
double r250430 = r250428 - r250429;
double r250431 = -8.381032267864287e-13;
bool r250432 = r250430 <= r250431;
double r250433 = 2.9793248573953006e-117;
bool r250434 = r250430 <= r250433;
double r250435 = !r250434;
bool r250436 = r250432 || r250435;
double r250437 = x;
double r250438 = y;
double r250439 = a;
double r250440 = r250438 / r250439;
double r250441 = r250440 * r250430;
double r250442 = r250437 - r250441;
double r250443 = cbrt(r250438);
double r250444 = r250443 / r250439;
double r250445 = r250444 * r250430;
double r250446 = r250443 * r250443;
double r250447 = r250445 * r250446;
double r250448 = r250437 - r250447;
double r250449 = r250436 ? r250442 : r250448;
return r250449;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 6.1 |
|---|---|
| Target | 0.7 |
| Herbie | 1.6 |
if (- z t) < -8.381032267864287e-13 or 2.9793248573953006e-117 < (- z t) Initial program 7.4
rmApplied associate-/l*7.2
rmApplied associate-/r/1.5
if -8.381032267864287e-13 < (- z t) < 2.9793248573953006e-117Initial program 1.2
rmApplied associate-/l*1.1
rmApplied associate-/r/5.6
rmApplied *-un-lft-identity5.6
Applied add-cube-cbrt5.8
Applied times-frac5.8
Applied associate-*l*1.6
Final simplification1.6
herbie shell --seed 2019235
(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)))