x + \frac{\left(y - x\right) \cdot z}{t}x + \frac{y - x}{\frac{\sqrt[3]{t}}{\sqrt[3]{z}} \cdot \frac{\sqrt[3]{t}}{\sqrt[3]{z}}} \cdot \frac{\sqrt[3]{z}}{\sqrt[3]{t}}double f(double x, double y, double z, double t) {
double r27777308 = x;
double r27777309 = y;
double r27777310 = r27777309 - r27777308;
double r27777311 = z;
double r27777312 = r27777310 * r27777311;
double r27777313 = t;
double r27777314 = r27777312 / r27777313;
double r27777315 = r27777308 + r27777314;
return r27777315;
}
double f(double x, double y, double z, double t) {
double r27777316 = x;
double r27777317 = y;
double r27777318 = r27777317 - r27777316;
double r27777319 = t;
double r27777320 = cbrt(r27777319);
double r27777321 = z;
double r27777322 = cbrt(r27777321);
double r27777323 = r27777320 / r27777322;
double r27777324 = r27777323 * r27777323;
double r27777325 = r27777318 / r27777324;
double r27777326 = r27777322 / r27777320;
double r27777327 = r27777325 * r27777326;
double r27777328 = r27777316 + r27777327;
return r27777328;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.0 |
|---|---|
| Target | 2.0 |
| Herbie | 0.9 |
Initial program 6.0
rmApplied *-un-lft-identity6.0
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
Simplified0.9
Final simplification0.9
herbie shell --seed 2019164
(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)))