x + y \cdot \frac{z - t}{z - a}\frac{y}{\frac{\sqrt[3]{z - a}}{\sqrt[3]{z - t}} \cdot \frac{\sqrt[3]{z - a}}{\sqrt[3]{z - t}}} \cdot \frac{\sqrt[3]{\sqrt[3]{z - t}} \cdot \sqrt[3]{\sqrt[3]{z - t} \cdot \sqrt[3]{z - t}}}{\sqrt[3]{z - a}} + xdouble f(double x, double y, double z, double t, double a) {
double r30768254 = x;
double r30768255 = y;
double r30768256 = z;
double r30768257 = t;
double r30768258 = r30768256 - r30768257;
double r30768259 = a;
double r30768260 = r30768256 - r30768259;
double r30768261 = r30768258 / r30768260;
double r30768262 = r30768255 * r30768261;
double r30768263 = r30768254 + r30768262;
return r30768263;
}
double f(double x, double y, double z, double t, double a) {
double r30768264 = y;
double r30768265 = z;
double r30768266 = a;
double r30768267 = r30768265 - r30768266;
double r30768268 = cbrt(r30768267);
double r30768269 = t;
double r30768270 = r30768265 - r30768269;
double r30768271 = cbrt(r30768270);
double r30768272 = r30768268 / r30768271;
double r30768273 = r30768272 * r30768272;
double r30768274 = r30768264 / r30768273;
double r30768275 = cbrt(r30768271);
double r30768276 = r30768271 * r30768271;
double r30768277 = cbrt(r30768276);
double r30768278 = r30768275 * r30768277;
double r30768279 = r30768278 / r30768268;
double r30768280 = r30768274 * r30768279;
double r30768281 = x;
double r30768282 = r30768280 + r30768281;
return r30768282;
}




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 | 0.7 |
Initial program 1.4
rmApplied add-cube-cbrt1.9
Applied add-cube-cbrt1.8
Applied times-frac1.8
Applied associate-*r*0.6
Simplified0.5
rmApplied add-cube-cbrt0.6
Applied cbrt-prod0.7
Final simplification0.7
herbie shell --seed 2019171
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisLine from plot-0.2.3.4, A"
:herbie-target
(+ x (/ y (/ (- z a) (- z t))))
(+ x (* y (/ (- z t) (- z a)))))