x - \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;a \le -1.39950285805274381 \cdot 10^{104}:\\
\;\;\;\;x - \frac{y}{\frac{a}{z - t}}\\
\mathbf{elif}\;a \le 3.75740059193433464 \cdot 10^{65}:\\
\;\;\;\;x - \frac{y \cdot \left(z - t\right)}{a}\\
\mathbf{else}:\\
\;\;\;\;\left(x - \frac{z - t}{a} \cdot y\right) + \left(\frac{z - t}{a} \cdot y\right) \cdot 0\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r316810 = x;
double r316811 = y;
double r316812 = z;
double r316813 = t;
double r316814 = r316812 - r316813;
double r316815 = r316811 * r316814;
double r316816 = a;
double r316817 = r316815 / r316816;
double r316818 = r316810 - r316817;
return r316818;
}
double f(double x, double y, double z, double t, double a) {
double r316819 = a;
double r316820 = -1.3995028580527438e+104;
bool r316821 = r316819 <= r316820;
double r316822 = x;
double r316823 = y;
double r316824 = z;
double r316825 = t;
double r316826 = r316824 - r316825;
double r316827 = r316819 / r316826;
double r316828 = r316823 / r316827;
double r316829 = r316822 - r316828;
double r316830 = 3.7574005919343346e+65;
bool r316831 = r316819 <= r316830;
double r316832 = r316823 * r316826;
double r316833 = r316832 / r316819;
double r316834 = r316822 - r316833;
double r316835 = r316826 / r316819;
double r316836 = r316835 * r316823;
double r316837 = r316822 - r316836;
double r316838 = 0.0;
double r316839 = r316836 * r316838;
double r316840 = r316837 + r316839;
double r316841 = r316831 ? r316834 : r316840;
double r316842 = r316821 ? r316829 : r316841;
return r316842;
}




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.2 |
if a < -1.3995028580527438e+104Initial program 12.4
rmApplied associate-/l*0.7
if -1.3995028580527438e+104 < a < 3.7574005919343346e+65Initial program 1.6
if 3.7574005919343346e+65 < a Initial program 10.0
rmApplied add-cube-cbrt10.3
Applied add-sqr-sqrt37.1
Applied prod-diff37.1
Simplified10.6
Simplified0.7
Final simplification1.2
herbie shell --seed 2020045 +o rules:numerics
(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.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)))