x - \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;\left(z - t\right) \cdot y = -\infty:\\
\;\;\;\;x - \frac{z - t}{a} \cdot y\\
\mathbf{elif}\;\left(z - t\right) \cdot y \le 4.602631262379337 \cdot 10^{+178}:\\
\;\;\;\;x - \frac{\left(z - t\right) \cdot y}{a}\\
\mathbf{else}:\\
\;\;\;\;x - \left(z - t\right) \cdot \frac{y}{a}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r17660795 = x;
double r17660796 = y;
double r17660797 = z;
double r17660798 = t;
double r17660799 = r17660797 - r17660798;
double r17660800 = r17660796 * r17660799;
double r17660801 = a;
double r17660802 = r17660800 / r17660801;
double r17660803 = r17660795 - r17660802;
return r17660803;
}
double f(double x, double y, double z, double t, double a) {
double r17660804 = z;
double r17660805 = t;
double r17660806 = r17660804 - r17660805;
double r17660807 = y;
double r17660808 = r17660806 * r17660807;
double r17660809 = -inf.0;
bool r17660810 = r17660808 <= r17660809;
double r17660811 = x;
double r17660812 = a;
double r17660813 = r17660806 / r17660812;
double r17660814 = r17660813 * r17660807;
double r17660815 = r17660811 - r17660814;
double r17660816 = 4.602631262379337e+178;
bool r17660817 = r17660808 <= r17660816;
double r17660818 = r17660808 / r17660812;
double r17660819 = r17660811 - r17660818;
double r17660820 = r17660807 / r17660812;
double r17660821 = r17660806 * r17660820;
double r17660822 = r17660811 - r17660821;
double r17660823 = r17660817 ? r17660819 : r17660822;
double r17660824 = r17660810 ? r17660815 : r17660823;
return r17660824;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 5.5 |
|---|---|
| Target | 0.7 |
| Herbie | 0.5 |
if (* y (- z t)) < -inf.0Initial program 60.1
Taylor expanded around 0 60.3
Simplified0.2
rmApplied associate-/r/0.2
if -inf.0 < (* y (- z t)) < 4.602631262379337e+178Initial program 0.4
Taylor expanded around 0 0.4
Simplified2.6
rmApplied div-inv2.8
Simplified2.7
rmApplied *-un-lft-identity2.7
Applied add-cube-cbrt3.1
Applied times-frac3.1
Applied associate-*r*1.2
Simplified1.2
rmApplied associate-*r/0.9
Simplified0.4
if 4.602631262379337e+178 < (* y (- z t)) Initial program 23.3
Taylor expanded around 0 23.3
Simplified0.9
rmApplied div-inv1.0
Simplified0.7
Final simplification0.5
herbie shell --seed 2019158
(FPCore (x y z t a)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, F"
:herbie-target
(if (< y -1.0761266216389975e-10) (- x (/ 1 (/ (/ a (- z t)) y))) (if (< y 2.894426862792089e-49) (- x (/ (* y (- z t)) a)) (- x (/ y (/ a (- z t))))))
(- x (/ (* y (- z t)) a)))