x + \frac{\left(y - x\right) \cdot z}{t}\frac{y \cdot z}{t} + \left(x - \frac{x \cdot z}{t}\right)double f(double x, double y, double z, double t) {
double r340685 = x;
double r340686 = y;
double r340687 = r340686 - r340685;
double r340688 = z;
double r340689 = r340687 * r340688;
double r340690 = t;
double r340691 = r340689 / r340690;
double r340692 = r340685 + r340691;
return r340692;
}
double f(double x, double y, double z, double t) {
double r340693 = y;
double r340694 = z;
double r340695 = r340693 * r340694;
double r340696 = t;
double r340697 = r340695 / r340696;
double r340698 = x;
double r340699 = r340698 * r340694;
double r340700 = r340699 / r340696;
double r340701 = r340698 - r340700;
double r340702 = r340697 + r340701;
return r340702;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.6 |
|---|---|
| Target | 2.1 |
| Herbie | 6.6 |
Initial program 6.6
rmApplied *-un-lft-identity6.6
Applied times-frac2.0
Simplified2.0
rmApplied add-cube-cbrt2.5
Applied add-cube-cbrt2.6
Applied times-frac2.6
Applied associate-*r*0.9
Final simplification6.6
herbie shell --seed 1978988140
(FPCore (x y z t)
:name "Numeric.Histogram:binBounds from Chart-1.5.3"
:precision binary64
:herbie-target
(if (< x -9.0255111955330046e-135) (- x (* (/ z t) (- x y))) (if (< x 4.2750321637007147e-250) (+ x (* (/ (- y x) t) z)) (+ x (/ (- y x) (/ t z)))))
(+ x (/ (* (- y x) z) t)))