x + \left(y - x\right) \cdot \frac{z}{t}x + \frac{\sqrt[3]{y - x} \cdot \sqrt[3]{y - x}}{\sqrt[3]{t}} \cdot \left(\left(\frac{\sqrt[3]{y - x}}{\sqrt[3]{t}} \cdot \frac{\sqrt[3]{z} \cdot \sqrt[3]{z}}{\sqrt[3]{\sqrt[3]{t} \cdot \sqrt[3]{t}}}\right) \cdot \frac{\sqrt[3]{z}}{\sqrt[3]{\sqrt[3]{t}}}\right)double f(double x, double y, double z, double t) {
double r373982 = x;
double r373983 = y;
double r373984 = r373983 - r373982;
double r373985 = z;
double r373986 = t;
double r373987 = r373985 / r373986;
double r373988 = r373984 * r373987;
double r373989 = r373982 + r373988;
return r373989;
}
double f(double x, double y, double z, double t) {
double r373990 = x;
double r373991 = y;
double r373992 = r373991 - r373990;
double r373993 = cbrt(r373992);
double r373994 = r373993 * r373993;
double r373995 = t;
double r373996 = cbrt(r373995);
double r373997 = r373994 / r373996;
double r373998 = r373993 / r373996;
double r373999 = z;
double r374000 = cbrt(r373999);
double r374001 = r374000 * r374000;
double r374002 = r373996 * r373996;
double r374003 = cbrt(r374002);
double r374004 = r374001 / r374003;
double r374005 = r373998 * r374004;
double r374006 = cbrt(r373996);
double r374007 = r374000 / r374006;
double r374008 = r374005 * r374007;
double r374009 = r373997 * r374008;
double r374010 = r373990 + r374009;
return r374010;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 2.2 |
|---|---|
| Target | 2.4 |
| Herbie | 1.2 |
Initial program 2.2
rmApplied add-cube-cbrt2.7
Applied *-un-lft-identity2.7
Applied times-frac2.7
Applied associate-*r*4.7
Simplified4.7
rmApplied add-cube-cbrt4.8
Applied times-frac4.8
Applied associate-*l*1.2
rmApplied add-cube-cbrt1.3
Applied cbrt-prod1.3
Applied add-cube-cbrt1.3
Applied times-frac1.3
Applied associate-*r*1.2
Final simplification1.2
herbie shell --seed 2019323
(FPCore (x y z t)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:tickPosition from plot-0.2.3.4"
:precision binary64
:herbie-target
(if (< (* (- y x) (/ z t)) -1013646692435.887) (+ x (/ (- y x) (/ t z))) (if (< (* (- y x) (/ z t)) -0.0) (+ x (/ (* (- y x) z) t)) (+ x (/ (- y x) (/ t z)))))
(+ x (* (- y x) (/ z t))))