x + \frac{y \cdot \left(z - t\right)}{a - t}\frac{\sqrt[3]{z - t}}{\frac{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}{\sqrt[3]{z - t}}} \cdot \frac{\sqrt[3]{z - t}}{\frac{\sqrt[3]{a - t}}{y}} + xdouble f(double x, double y, double z, double t, double a) {
double r534431 = x;
double r534432 = y;
double r534433 = z;
double r534434 = t;
double r534435 = r534433 - r534434;
double r534436 = r534432 * r534435;
double r534437 = a;
double r534438 = r534437 - r534434;
double r534439 = r534436 / r534438;
double r534440 = r534431 + r534439;
return r534440;
}
double f(double x, double y, double z, double t, double a) {
double r534441 = z;
double r534442 = t;
double r534443 = r534441 - r534442;
double r534444 = cbrt(r534443);
double r534445 = a;
double r534446 = r534445 - r534442;
double r534447 = cbrt(r534446);
double r534448 = r534447 * r534447;
double r534449 = r534448 / r534444;
double r534450 = r534444 / r534449;
double r534451 = y;
double r534452 = r534447 / r534451;
double r534453 = r534444 / r534452;
double r534454 = r534450 * r534453;
double r534455 = x;
double r534456 = r534454 + r534455;
return r534456;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.6 |
|---|---|
| Target | 1.2 |
| Herbie | 0.9 |
Initial program 10.6
Simplified2.9
rmApplied clear-num3.1
rmApplied fma-udef3.1
Simplified2.9
rmApplied *-un-lft-identity2.9
Applied add-cube-cbrt3.4
Applied times-frac3.4
Applied add-cube-cbrt3.3
Applied times-frac0.9
Simplified0.9
Final simplification0.9
herbie shell --seed 2019354 +o rules:numerics
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTicks from plot-0.2.3.4, B"
:precision binary64
:herbie-target
(+ x (/ y (/ (- a t) (- z t))))
(+ x (/ (* y (- z t)) (- a t))))