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 r417759 = x;
double r417760 = y;
double r417761 = r417760 - r417759;
double r417762 = z;
double r417763 = t;
double r417764 = r417762 / r417763;
double r417765 = r417761 * r417764;
double r417766 = r417759 + r417765;
return r417766;
}
double f(double x, double y, double z, double t) {
double r417767 = x;
double r417768 = y;
double r417769 = r417768 - r417767;
double r417770 = cbrt(r417769);
double r417771 = r417770 * r417770;
double r417772 = t;
double r417773 = cbrt(r417772);
double r417774 = r417771 / r417773;
double r417775 = r417770 / r417773;
double r417776 = z;
double r417777 = cbrt(r417776);
double r417778 = r417777 * r417777;
double r417779 = r417773 * r417773;
double r417780 = cbrt(r417779);
double r417781 = r417778 / r417780;
double r417782 = r417775 * r417781;
double r417783 = cbrt(r417773);
double r417784 = r417777 / r417783;
double r417785 = r417782 * r417784;
double r417786 = r417774 * r417785;
double r417787 = r417767 + r417786;
return r417787;
}




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))))