x + y \cdot \frac{z - t}{z - a}\left(x + \frac{z}{\frac{z - a}{y}}\right) - \frac{t}{\frac{z - a}{y}}double f(double x, double y, double z, double t, double a) {
double r376097 = x;
double r376098 = y;
double r376099 = z;
double r376100 = t;
double r376101 = r376099 - r376100;
double r376102 = a;
double r376103 = r376099 - r376102;
double r376104 = r376101 / r376103;
double r376105 = r376098 * r376104;
double r376106 = r376097 + r376105;
return r376106;
}
double f(double x, double y, double z, double t, double a) {
double r376107 = x;
double r376108 = z;
double r376109 = a;
double r376110 = r376108 - r376109;
double r376111 = y;
double r376112 = r376110 / r376111;
double r376113 = r376108 / r376112;
double r376114 = r376107 + r376113;
double r376115 = t;
double r376116 = r376115 / r376112;
double r376117 = r376114 - r376116;
return r376117;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 1.4 |
|---|---|
| Target | 1.3 |
| Herbie | 2.8 |
Initial program 1.4
rmApplied add-cube-cbrt1.9
Applied add-cube-cbrt1.8
Applied times-frac1.8
Applied associate-*r*0.6
Final simplification2.8
herbie shell --seed 1978988140
(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)))))