x + \frac{\left(y - x\right) \cdot z}{t}\begin{array}{l}
\mathbf{if}\;z \le -1.47437460621894122515597907358401131123 \cdot 10^{-73}:\\
\;\;\;\;x - z \cdot \left(\frac{x}{t} - \frac{y}{t}\right)\\
\mathbf{else}:\\
\;\;\;\;x - \frac{z}{t} \cdot \left(x - y\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r330225 = x;
double r330226 = y;
double r330227 = r330226 - r330225;
double r330228 = z;
double r330229 = r330227 * r330228;
double r330230 = t;
double r330231 = r330229 / r330230;
double r330232 = r330225 + r330231;
return r330232;
}
double f(double x, double y, double z, double t) {
double r330233 = z;
double r330234 = -1.4743746062189412e-73;
bool r330235 = r330233 <= r330234;
double r330236 = x;
double r330237 = t;
double r330238 = r330236 / r330237;
double r330239 = y;
double r330240 = r330239 / r330237;
double r330241 = r330238 - r330240;
double r330242 = r330233 * r330241;
double r330243 = r330236 - r330242;
double r330244 = r330233 / r330237;
double r330245 = r330236 - r330239;
double r330246 = r330244 * r330245;
double r330247 = r330236 - r330246;
double r330248 = r330235 ? r330243 : r330247;
return r330248;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.4 |
|---|---|
| Target | 1.9 |
| Herbie | 1.8 |
if z < -1.4743746062189412e-73Initial program 11.2
Simplified2.7
rmApplied div-inv2.8
Applied associate-*l*2.2
Simplified2.1
rmApplied div-sub2.1
if -1.4743746062189412e-73 < z Initial program 4.8
Simplified1.8
Final simplification1.8
herbie shell --seed 2019179
(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)))