x + y \cdot \frac{z - t}{z - a}\mathsf{fma}\left(\frac{z - t}{z - a}, y, x\right)double f(double x, double y, double z, double t, double a) {
double r294788 = x;
double r294789 = y;
double r294790 = z;
double r294791 = t;
double r294792 = r294790 - r294791;
double r294793 = a;
double r294794 = r294790 - r294793;
double r294795 = r294792 / r294794;
double r294796 = r294789 * r294795;
double r294797 = r294788 + r294796;
return r294797;
}
double f(double x, double y, double z, double t, double a) {
double r294798 = z;
double r294799 = t;
double r294800 = r294798 - r294799;
double r294801 = a;
double r294802 = r294798 - r294801;
double r294803 = r294800 / r294802;
double r294804 = y;
double r294805 = x;
double r294806 = fma(r294803, r294804, r294805);
return r294806;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 1.3 |
|---|---|
| Target | 1.1 |
| Herbie | 1.3 |
Initial program 1.3
Simplified1.3
rmApplied *-un-lft-identity1.3
Applied *-un-lft-identity1.3
Applied times-frac1.3
Simplified1.3
Final simplification1.3
herbie shell --seed 2019322 +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)))))