x + \frac{y \cdot \left(z - t\right)}{a - t}\left(\frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}} \cdot \left(z - t\right)\right) \cdot \frac{\sqrt[3]{y}}{\sqrt[3]{a - t}} + xdouble f(double x, double y, double z, double t, double a) {
double r355853 = x;
double r355854 = y;
double r355855 = z;
double r355856 = t;
double r355857 = r355855 - r355856;
double r355858 = r355854 * r355857;
double r355859 = a;
double r355860 = r355859 - r355856;
double r355861 = r355858 / r355860;
double r355862 = r355853 + r355861;
return r355862;
}
double f(double x, double y, double z, double t, double a) {
double r355863 = y;
double r355864 = cbrt(r355863);
double r355865 = r355864 * r355864;
double r355866 = a;
double r355867 = t;
double r355868 = r355866 - r355867;
double r355869 = cbrt(r355868);
double r355870 = r355869 * r355869;
double r355871 = r355865 / r355870;
double r355872 = z;
double r355873 = r355872 - r355867;
double r355874 = r355871 * r355873;
double r355875 = r355864 / r355869;
double r355876 = r355874 * r355875;
double r355877 = x;
double r355878 = r355876 + r355877;
return r355878;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.6 |
|---|---|
| Target | 1.3 |
| Herbie | 1.0 |
Initial program 10.6
Simplified2.9
rmApplied div-inv2.9
rmApplied fma-udef2.9
Simplified2.9
rmApplied add-cube-cbrt3.3
Applied add-cube-cbrt3.4
Applied times-frac3.4
Applied associate-*r*1.0
Simplified1.0
Final simplification1.0
herbie shell --seed 2019208 +o rules:numerics
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTicks from plot-0.2.3.4, B"
:precision binary64
:herbie-target
(+ x (/ y (/ (- a t) (- z t))))
(+ x (/ (* y (- z t)) (- a t))))