x + \frac{\left(y - x\right) \cdot z}{t}\begin{array}{l}
\mathbf{if}\;x + \frac{\left(y - x\right) \cdot z}{t} \le -1.538194312931815 \cdot 10^{+215}:\\
\;\;\;\;x + \frac{y - x}{\frac{t}{z}}\\
\mathbf{elif}\;x + \frac{\left(y - x\right) \cdot z}{t} \le 4.9051309220405685 \cdot 10^{+274}:\\
\;\;\;\;x + \frac{\left(y - x\right) \cdot z}{t}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y - x}{\frac{t}{z}}\\
\end{array}double f(double x, double y, double z, double t) {
double r21367451 = x;
double r21367452 = y;
double r21367453 = r21367452 - r21367451;
double r21367454 = z;
double r21367455 = r21367453 * r21367454;
double r21367456 = t;
double r21367457 = r21367455 / r21367456;
double r21367458 = r21367451 + r21367457;
return r21367458;
}
double f(double x, double y, double z, double t) {
double r21367459 = x;
double r21367460 = y;
double r21367461 = r21367460 - r21367459;
double r21367462 = z;
double r21367463 = r21367461 * r21367462;
double r21367464 = t;
double r21367465 = r21367463 / r21367464;
double r21367466 = r21367459 + r21367465;
double r21367467 = -1.538194312931815e+215;
bool r21367468 = r21367466 <= r21367467;
double r21367469 = r21367464 / r21367462;
double r21367470 = r21367461 / r21367469;
double r21367471 = r21367459 + r21367470;
double r21367472 = 4.9051309220405685e+274;
bool r21367473 = r21367466 <= r21367472;
double r21367474 = r21367473 ? r21367466 : r21367471;
double r21367475 = r21367468 ? r21367471 : r21367474;
return r21367475;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.0 |
|---|---|
| Target | 2.0 |
| Herbie | 1.3 |
if (+ x (/ (* (- y x) z) t)) < -1.538194312931815e+215 or 4.9051309220405685e+274 < (+ x (/ (* (- y x) z) t)) Initial program 25.3
rmApplied associate-/l*2.5
if -1.538194312931815e+215 < (+ x (/ (* (- y x) z) t)) < 4.9051309220405685e+274Initial program 0.9
Final simplification1.3
herbie shell --seed 2019164 +o rules:numerics
(FPCore (x y z t)
:name "Numeric.Histogram:binBounds from Chart-1.5.3"
:herbie-target
(if (< x -9.025511195533005e-135) (- x (* (/ z t) (- x y))) (if (< x 4.275032163700715e-250) (+ x (* (/ (- y x) t) z)) (+ x (/ (- y x) (/ t z)))))
(+ x (/ (* (- y x) z) t)))