x + \frac{\left(y - x\right) \cdot z}{t}x + \left(y - x\right) \cdot \frac{z}{t}double f(double x, double y, double z, double t) {
double r512093 = x;
double r512094 = y;
double r512095 = r512094 - r512093;
double r512096 = z;
double r512097 = r512095 * r512096;
double r512098 = t;
double r512099 = r512097 / r512098;
double r512100 = r512093 + r512099;
return r512100;
}
double f(double x, double y, double z, double t) {
double r512101 = x;
double r512102 = y;
double r512103 = r512102 - r512101;
double r512104 = z;
double r512105 = t;
double r512106 = r512104 / r512105;
double r512107 = r512103 * r512106;
double r512108 = r512101 + r512107;
return r512108;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.9 |
|---|---|
| Target | 2.0 |
| Herbie | 2.1 |
Initial program 6.9
rmApplied *-un-lft-identity6.9
Applied times-frac2.1
Simplified2.1
Final simplification2.1
herbie shell --seed 2020083
(FPCore (x y z t)
:name "Numeric.Histogram:binBounds from Chart-1.5.3"
:precision binary64
: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)))