x + \frac{\left(y - x\right) \cdot z}{t}\begin{array}{l}
\mathbf{if}\;x + \frac{\left(y - x\right) \cdot z}{t} = -\infty:\\
\;\;\;\;\mathsf{fma}\left(\frac{y - x}{t}, z, x\right)\\
\mathbf{elif}\;x + \frac{\left(y - x\right) \cdot z}{t} \le 4.520106774411556088249689065409096453316 \cdot 10^{300}:\\
\;\;\;\;x + \frac{\left(y - x\right) \cdot z}{t}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{y - x}{t}, z, x\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r17781283 = x;
double r17781284 = y;
double r17781285 = r17781284 - r17781283;
double r17781286 = z;
double r17781287 = r17781285 * r17781286;
double r17781288 = t;
double r17781289 = r17781287 / r17781288;
double r17781290 = r17781283 + r17781289;
return r17781290;
}
double f(double x, double y, double z, double t) {
double r17781291 = x;
double r17781292 = y;
double r17781293 = r17781292 - r17781291;
double r17781294 = z;
double r17781295 = r17781293 * r17781294;
double r17781296 = t;
double r17781297 = r17781295 / r17781296;
double r17781298 = r17781291 + r17781297;
double r17781299 = -inf.0;
bool r17781300 = r17781298 <= r17781299;
double r17781301 = r17781293 / r17781296;
double r17781302 = fma(r17781301, r17781294, r17781291);
double r17781303 = 4.520106774411556e+300;
bool r17781304 = r17781298 <= r17781303;
double r17781305 = r17781304 ? r17781298 : r17781302;
double r17781306 = r17781300 ? r17781302 : r17781305;
return r17781306;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 6.5 |
|---|---|
| Target | 2.0 |
| Herbie | 0.9 |
if (+ x (/ (* (- y x) z) t)) < -inf.0 or 4.520106774411556e+300 < (+ x (/ (* (- y x) z) t)) Initial program 60.6
Simplified1.5
if -inf.0 < (+ x (/ (* (- y x) z) t)) < 4.520106774411556e+300Initial program 0.8
Final simplification0.9
herbie shell --seed 2019168 +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)))