x + y \cdot \frac{z - t}{a - t}\mathsf{fma}\left(\frac{z}{a - t} - \frac{t}{a - t}, y, x\right)double f(double x, double y, double z, double t, double a) {
double r394064 = x;
double r394065 = y;
double r394066 = z;
double r394067 = t;
double r394068 = r394066 - r394067;
double r394069 = a;
double r394070 = r394069 - r394067;
double r394071 = r394068 / r394070;
double r394072 = r394065 * r394071;
double r394073 = r394064 + r394072;
return r394073;
}
double f(double x, double y, double z, double t, double a) {
double r394074 = z;
double r394075 = a;
double r394076 = t;
double r394077 = r394075 - r394076;
double r394078 = r394074 / r394077;
double r394079 = r394076 / r394077;
double r394080 = r394078 - r394079;
double r394081 = y;
double r394082 = x;
double r394083 = fma(r394080, r394081, r394082);
return r394083;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 1.3 |
|---|---|
| Target | 0.5 |
| Herbie | 1.3 |
Initial program 1.3
Simplified1.3
rmApplied div-sub1.3
Final simplification1.3
herbie shell --seed 2019305 +o rules:numerics
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisLine from plot-0.2.3.4, B"
:precision binary64
:herbie-target
(if (< y -8.50808486055124107e-17) (+ x (* y (/ (- z t) (- a t)))) (if (< y 2.8944268627920891e-49) (+ x (* (* y (- z t)) (/ 1 (- a t)))) (+ x (* y (/ (- z t) (- a t))))))
(+ x (* y (/ (- z t) (- a t)))))