x + y \cdot \frac{z - t}{z - a}\frac{y}{\frac{z - a}{z - t}} + xdouble f(double x, double y, double z, double t, double a) {
double r731682 = x;
double r731683 = y;
double r731684 = z;
double r731685 = t;
double r731686 = r731684 - r731685;
double r731687 = a;
double r731688 = r731684 - r731687;
double r731689 = r731686 / r731688;
double r731690 = r731683 * r731689;
double r731691 = r731682 + r731690;
return r731691;
}
double f(double x, double y, double z, double t, double a) {
double r731692 = y;
double r731693 = z;
double r731694 = a;
double r731695 = r731693 - r731694;
double r731696 = t;
double r731697 = r731693 - r731696;
double r731698 = r731695 / r731697;
double r731699 = r731692 / r731698;
double r731700 = x;
double r731701 = r731699 + r731700;
return r731701;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 1.3 |
|---|---|
| Target | 1.1 |
| Herbie | 1.1 |
Initial program 1.3
Simplified1.3
rmApplied clear-num1.3
rmApplied add-cube-cbrt1.8
Applied *-un-lft-identity1.8
Applied times-frac1.8
rmApplied fma-udef1.8
Simplified1.1
Final simplification1.1
herbie shell --seed 2020043 +o rules:numerics
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisLine from plot-0.2.3.4, A"
:precision binary64
:herbie-target
(+ x (/ y (/ (- z a) (- z t))))
(+ x (* y (/ (- z t) (- z a)))))