x + y \cdot \frac{z - t}{z - a}x + \left(y \cdot \frac{\sqrt[3]{z - t} \cdot \sqrt[3]{z - t}}{\sqrt[3]{z - a} \cdot \sqrt[3]{z - a}}\right) \cdot \frac{\sqrt[3]{z - t}}{\sqrt[3]{z - a}}double f(double x, double y, double z, double t, double a) {
double r517891 = x;
double r517892 = y;
double r517893 = z;
double r517894 = t;
double r517895 = r517893 - r517894;
double r517896 = a;
double r517897 = r517893 - r517896;
double r517898 = r517895 / r517897;
double r517899 = r517892 * r517898;
double r517900 = r517891 + r517899;
return r517900;
}
double f(double x, double y, double z, double t, double a) {
double r517901 = x;
double r517902 = y;
double r517903 = z;
double r517904 = t;
double r517905 = r517903 - r517904;
double r517906 = cbrt(r517905);
double r517907 = r517906 * r517906;
double r517908 = a;
double r517909 = r517903 - r517908;
double r517910 = cbrt(r517909);
double r517911 = r517910 * r517910;
double r517912 = r517907 / r517911;
double r517913 = r517902 * r517912;
double r517914 = r517906 / r517910;
double r517915 = r517913 * r517914;
double r517916 = r517901 + r517915;
return r517916;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 1.6 |
|---|---|
| Target | 1.4 |
| Herbie | 0.6 |
Initial program 1.6
rmApplied add-cube-cbrt2.1
Applied add-cube-cbrt1.9
Applied times-frac1.9
Applied associate-*r*0.6
Final simplification0.6
herbie shell --seed 2020003
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisLine from plot-0.2.3.4, A"
:precision binary64
:herbie-target
(+ x (/ y (/ (- z a) (- z t))))
(+ x (* y (/ (- z t) (- z a)))))