x + \frac{y \cdot \left(z - t\right)}{a - t}\mathsf{fma}\left(y, \frac{1}{\frac{a - t}{z - t}}, x\right)double f(double x, double y, double z, double t, double a) {
double r23396189 = x;
double r23396190 = y;
double r23396191 = z;
double r23396192 = t;
double r23396193 = r23396191 - r23396192;
double r23396194 = r23396190 * r23396193;
double r23396195 = a;
double r23396196 = r23396195 - r23396192;
double r23396197 = r23396194 / r23396196;
double r23396198 = r23396189 + r23396197;
return r23396198;
}
double f(double x, double y, double z, double t, double a) {
double r23396199 = y;
double r23396200 = 1.0;
double r23396201 = a;
double r23396202 = t;
double r23396203 = r23396201 - r23396202;
double r23396204 = z;
double r23396205 = r23396204 - r23396202;
double r23396206 = r23396203 / r23396205;
double r23396207 = r23396200 / r23396206;
double r23396208 = x;
double r23396209 = fma(r23396199, r23396207, r23396208);
return r23396209;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 11.0 |
|---|---|
| Target | 1.3 |
| Herbie | 1.5 |
Initial program 11.0
Simplified1.5
rmApplied clear-num1.5
Final simplification1.5
herbie shell --seed 2019174 +o rules:numerics
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTicks from plot-0.2.3.4, B"
:herbie-target
(+ x (/ y (/ (- a t) (- z t))))
(+ x (/ (* y (- z t)) (- a t))))