x + \frac{y \cdot \left(z - t\right)}{z - a}x + \frac{y \cdot \left(z - t\right)}{z - a}double f(double x, double y, double z, double t, double a) {
double r452868 = x;
double r452869 = y;
double r452870 = z;
double r452871 = t;
double r452872 = r452870 - r452871;
double r452873 = r452869 * r452872;
double r452874 = a;
double r452875 = r452870 - r452874;
double r452876 = r452873 / r452875;
double r452877 = r452868 + r452876;
return r452877;
}
double f(double x, double y, double z, double t, double a) {
double r452878 = x;
double r452879 = y;
double r452880 = z;
double r452881 = t;
double r452882 = r452880 - r452881;
double r452883 = r452879 * r452882;
double r452884 = a;
double r452885 = r452880 - r452884;
double r452886 = r452883 / r452885;
double r452887 = r452878 + r452886;
return r452887;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.8 |
|---|---|
| Target | 1.2 |
| Herbie | 10.8 |
if y < -2.8379621231086494e-19 or 3.355115332728058e-103 < y Initial program 18.7
rmApplied associate-/l*0.7
if -2.8379621231086494e-19 < y < 3.355115332728058e-103Initial program 0.4
Final simplification10.8
herbie shell --seed 2019297
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTicks from plot-0.2.3.4, A"
:precision binary64
:herbie-target
(+ x (/ y (/ (- z a) (- z t))))
(+ x (/ (* y (- z t)) (- z a))))