x + \frac{y \cdot \left(z - t\right)}{a - t}\frac{\frac{z - t}{a - t}}{\frac{1}{y}} + xdouble f(double x, double y, double z, double t, double a) {
double r617023 = x;
double r617024 = y;
double r617025 = z;
double r617026 = t;
double r617027 = r617025 - r617026;
double r617028 = r617024 * r617027;
double r617029 = a;
double r617030 = r617029 - r617026;
double r617031 = r617028 / r617030;
double r617032 = r617023 + r617031;
return r617032;
}
double f(double x, double y, double z, double t, double a) {
double r617033 = z;
double r617034 = t;
double r617035 = r617033 - r617034;
double r617036 = a;
double r617037 = r617036 - r617034;
double r617038 = r617035 / r617037;
double r617039 = 1.0;
double r617040 = y;
double r617041 = r617039 / r617040;
double r617042 = r617038 / r617041;
double r617043 = x;
double r617044 = r617042 + r617043;
return r617044;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 11.1 |
|---|---|
| Target | 1.2 |
| Herbie | 1.3 |
Initial program 11.1
Simplified2.8
rmApplied clear-num3.0
rmApplied fma-udef3.0
Simplified2.8
rmApplied div-inv2.9
Applied associate-/r*1.3
Final simplification1.3
herbie shell --seed 2020060 +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))))