x + \frac{\left(y - z\right) \cdot t}{a - z}x + \frac{y - z}{a - z} \cdot tdouble f(double x, double y, double z, double t, double a) {
double r420960 = x;
double r420961 = y;
double r420962 = z;
double r420963 = r420961 - r420962;
double r420964 = t;
double r420965 = r420963 * r420964;
double r420966 = a;
double r420967 = r420966 - r420962;
double r420968 = r420965 / r420967;
double r420969 = r420960 + r420968;
return r420969;
}
double f(double x, double y, double z, double t, double a) {
double r420970 = x;
double r420971 = y;
double r420972 = z;
double r420973 = r420971 - r420972;
double r420974 = a;
double r420975 = r420974 - r420972;
double r420976 = r420973 / r420975;
double r420977 = t;
double r420978 = r420976 * r420977;
double r420979 = r420970 + r420978;
return r420979;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.4 |
|---|---|
| Target | 0.7 |
| Herbie | 1.3 |
Initial program 10.4
rmApplied associate-/l*3.0
rmApplied associate-/r/1.3
Final simplification1.3
herbie shell --seed 2019208
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTick from plot-0.2.3.4, A"
:precision binary64
:herbie-target
(if (< t -1.0682974490174067e-39) (+ x (* (/ (- y z) (- a z)) t)) (if (< t 3.9110949887586375e-141) (+ x (/ (* (- y z) t) (- a z))) (+ x (* (/ (- y z) (- a z)) t))))
(+ x (/ (* (- y z) t) (- a z))))