x - \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;y \cdot \left(z - t\right) \le -2.885127437985216706617229964801861933916 \cdot 10^{296} \lor \neg \left(y \cdot \left(z - t\right) \le 1.361987298119512454986754907617398197992 \cdot 10^{224}\right):\\
\;\;\;\;x - \frac{y}{a} \cdot \left(z - t\right)\\
\mathbf{else}:\\
\;\;\;\;{\left(x - \frac{y \cdot \left(z - t\right)}{a}\right)}^{1}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r312911 = x;
double r312912 = y;
double r312913 = z;
double r312914 = t;
double r312915 = r312913 - r312914;
double r312916 = r312912 * r312915;
double r312917 = a;
double r312918 = r312916 / r312917;
double r312919 = r312911 - r312918;
return r312919;
}
double f(double x, double y, double z, double t, double a) {
double r312920 = y;
double r312921 = z;
double r312922 = t;
double r312923 = r312921 - r312922;
double r312924 = r312920 * r312923;
double r312925 = -2.8851274379852167e+296;
bool r312926 = r312924 <= r312925;
double r312927 = 1.3619872981195125e+224;
bool r312928 = r312924 <= r312927;
double r312929 = !r312928;
bool r312930 = r312926 || r312929;
double r312931 = x;
double r312932 = a;
double r312933 = r312920 / r312932;
double r312934 = r312933 * r312923;
double r312935 = r312931 - r312934;
double r312936 = r312924 / r312932;
double r312937 = r312931 - r312936;
double r312938 = 1.0;
double r312939 = pow(r312937, r312938);
double r312940 = r312930 ? r312935 : r312939;
return r312940;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 6.4 |
|---|---|
| Target | 0.7 |
| Herbie | 0.4 |
if (* y (- z t)) < -2.8851274379852167e+296 or 1.3619872981195125e+224 < (* y (- z t)) Initial program 43.3
rmApplied associate-/l*0.4
rmApplied associate-/r/0.5
if -2.8851274379852167e+296 < (* y (- z t)) < 1.3619872981195125e+224Initial program 0.4
rmApplied pow10.4
Final simplification0.4
herbie shell --seed 2020002
(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)))