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 3.055507619344911093835800045301061034504 \cdot 10^{304}\right):\\
\;\;\;\;x + \frac{y}{\frac{t}{z - x}}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y \cdot \left(z - x\right)}{t}\\
\end{array}double f(double x, double y, double z, double t) {
double r276961 = x;
double r276962 = y;
double r276963 = z;
double r276964 = r276963 - r276961;
double r276965 = r276962 * r276964;
double r276966 = t;
double r276967 = r276965 / r276966;
double r276968 = r276961 + r276967;
return r276968;
}
double f(double x, double y, double z, double t) {
double r276969 = x;
double r276970 = y;
double r276971 = z;
double r276972 = r276971 - r276969;
double r276973 = r276970 * r276972;
double r276974 = t;
double r276975 = r276973 / r276974;
double r276976 = r276969 + r276975;
double r276977 = -inf.0;
bool r276978 = r276976 <= r276977;
double r276979 = 3.055507619344911e+304;
bool r276980 = r276976 <= r276979;
double r276981 = !r276980;
bool r276982 = r276978 || r276981;
double r276983 = r276974 / r276972;
double r276984 = r276970 / r276983;
double r276985 = r276969 + r276984;
double r276986 = r276982 ? r276985 : r276976;
return r276986;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.7 |
|---|---|
| Target | 2.0 |
| Herbie | 0.8 |
if (+ x (/ (* y (- z x)) t)) < -inf.0 or 3.055507619344911e+304 < (+ x (/ (* y (- z x)) t)) Initial program 62.1
rmApplied associate-/l*0.9
if -inf.0 < (+ x (/ (* y (- z x)) t)) < 3.055507619344911e+304Initial program 0.8
Final simplification0.8
herbie shell --seed 2019235
(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)))