x + \frac{y \cdot \left(z - x\right)}{t}\begin{array}{l}
\mathbf{if}\;x + \frac{y \cdot \left(z - x\right)}{t} = -\infty \lor \neg \left(x + \frac{y \cdot \left(z - x\right)}{t} \le 4.596907320351968711623976426577643448601 \cdot 10^{299}\right):\\
\;\;\;\;x + y \cdot \frac{z - x}{t}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y \cdot \left(z - x\right)}{t}\\
\end{array}double f(double x, double y, double z, double t) {
double r295173 = x;
double r295174 = y;
double r295175 = z;
double r295176 = r295175 - r295173;
double r295177 = r295174 * r295176;
double r295178 = t;
double r295179 = r295177 / r295178;
double r295180 = r295173 + r295179;
return r295180;
}
double f(double x, double y, double z, double t) {
double r295181 = x;
double r295182 = y;
double r295183 = z;
double r295184 = r295183 - r295181;
double r295185 = r295182 * r295184;
double r295186 = t;
double r295187 = r295185 / r295186;
double r295188 = r295181 + r295187;
double r295189 = -inf.0;
bool r295190 = r295188 <= r295189;
double r295191 = 4.596907320351969e+299;
bool r295192 = r295188 <= r295191;
double r295193 = !r295192;
bool r295194 = r295190 || r295193;
double r295195 = r295184 / r295186;
double r295196 = r295182 * r295195;
double r295197 = r295181 + r295196;
double r295198 = r295194 ? r295197 : r295188;
return r295198;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.5 |
|---|---|
| Target | 2.1 |
| Herbie | 0.9 |
if (+ x (/ (* y (- z x)) t)) < -inf.0 or 4.596907320351969e+299 < (+ x (/ (* y (- z x)) t)) Initial program 58.2
rmApplied *-un-lft-identity58.2
Applied times-frac2.8
Simplified2.8
if -inf.0 < (+ x (/ (* y (- z x)) t)) < 4.596907320351969e+299Initial program 0.7
Final simplification0.9
herbie shell --seed 2019353
(FPCore (x y z t)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, D"
:precision binary64
:herbie-target
(- x (+ (* x (/ y t)) (* (- z) (/ y t))))
(+ x (/ (* y (- z x)) t)))