x + y \cdot \frac{z - t}{a - t}x + y \cdot \left(\left(z - t\right) \cdot \frac{1}{a - t}\right)double f(double x, double y, double z, double t, double a) {
double r663766 = x;
double r663767 = y;
double r663768 = z;
double r663769 = t;
double r663770 = r663768 - r663769;
double r663771 = a;
double r663772 = r663771 - r663769;
double r663773 = r663770 / r663772;
double r663774 = r663767 * r663773;
double r663775 = r663766 + r663774;
return r663775;
}
double f(double x, double y, double z, double t, double a) {
double r663776 = x;
double r663777 = y;
double r663778 = z;
double r663779 = t;
double r663780 = r663778 - r663779;
double r663781 = 1.0;
double r663782 = a;
double r663783 = r663782 - r663779;
double r663784 = r663781 / r663783;
double r663785 = r663780 * r663784;
double r663786 = r663777 * r663785;
double r663787 = r663776 + r663786;
return r663787;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 1.2 |
|---|---|
| Target | 0.4 |
| Herbie | 1.2 |
Initial program 1.2
rmApplied div-inv1.2
Final simplification1.2
herbie shell --seed 2020047 +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.508084860551241e-17) (+ x (* y (/ (- z t) (- a t)))) (if (< y 2.894426862792089e-49) (+ x (* (* y (- z t)) (/ 1 (- a t)))) (+ x (* y (/ (- z t) (- a t))))))
(+ x (* y (/ (- z t) (- a t)))))