x + \frac{y \cdot \left(z - x\right)}{t}\begin{array}{l}
\mathbf{if}\;x + \frac{y \cdot \left(z - x\right)}{t} \le -1.70747929163668185 \cdot 10^{295} \lor \neg \left(x + \frac{y \cdot \left(z - x\right)}{t} \le 7.10746035173477744 \cdot 10^{255}\right):\\
\;\;\;\;\mathsf{fma}\left(\frac{y}{t}, z - x, x\right)\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y \cdot \left(z - x\right)}{t}\\
\end{array}double code(double x, double y, double z, double t) {
return (x + ((y * (z - x)) / t));
}
double code(double x, double y, double z, double t) {
double temp;
if ((((x + ((y * (z - x)) / t)) <= -1.7074792916366819e+295) || !((x + ((y * (z - x)) / t)) <= 7.1074603517347774e+255))) {
temp = fma((y / t), (z - x), x);
} else {
temp = (x + ((y * (z - x)) / t));
}
return temp;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.4 |
|---|---|
| Target | 2.1 |
| Herbie | 1.1 |
if (+ x (/ (* y (- z x)) t)) < -1.7074792916366819e+295 or 7.1074603517347774e+255 < (+ x (/ (* y (- z x)) t)) Initial program 37.7
Simplified2.7
if -1.7074792916366819e+295 < (+ x (/ (* y (- z x)) t)) < 7.1074603517347774e+255Initial program 0.8
Final simplification1.1
herbie shell --seed 2020066 +o rules:numerics
(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)))