x + \frac{\left(y - x\right) \cdot z}{t}\frac{\sqrt[3]{y - x}}{\frac{t}{\sqrt[3]{z}}} \cdot \left(\left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right) \cdot \left(\sqrt[3]{y - x} \cdot \sqrt[3]{y - x}\right)\right) + xdouble f(double x, double y, double z, double t) {
double r27248958 = x;
double r27248959 = y;
double r27248960 = r27248959 - r27248958;
double r27248961 = z;
double r27248962 = r27248960 * r27248961;
double r27248963 = t;
double r27248964 = r27248962 / r27248963;
double r27248965 = r27248958 + r27248964;
return r27248965;
}
double f(double x, double y, double z, double t) {
double r27248966 = y;
double r27248967 = x;
double r27248968 = r27248966 - r27248967;
double r27248969 = cbrt(r27248968);
double r27248970 = t;
double r27248971 = z;
double r27248972 = cbrt(r27248971);
double r27248973 = r27248970 / r27248972;
double r27248974 = r27248969 / r27248973;
double r27248975 = r27248972 * r27248972;
double r27248976 = r27248969 * r27248969;
double r27248977 = r27248975 * r27248976;
double r27248978 = r27248974 * r27248977;
double r27248979 = r27248978 + r27248967;
return r27248979;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.4 |
|---|---|
| Target | 1.8 |
| Herbie | 1.8 |
Initial program 6.4
rmApplied associate-/l*1.8
rmApplied add-cube-cbrt2.4
Applied *-un-lft-identity2.4
Applied times-frac2.4
Applied add-cube-cbrt2.5
Applied times-frac1.8
Simplified1.8
Final simplification1.8
herbie shell --seed 2019162
(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)))