x + \frac{y \cdot \left(z - t\right)}{a - t}x + \left(\frac{\sqrt[3]{y}}{a - t} \cdot \left(z - t\right)\right) \cdot \left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right)double f(double x, double y, double z, double t, double a) {
double r550606 = x;
double r550607 = y;
double r550608 = z;
double r550609 = t;
double r550610 = r550608 - r550609;
double r550611 = r550607 * r550610;
double r550612 = a;
double r550613 = r550612 - r550609;
double r550614 = r550611 / r550613;
double r550615 = r550606 + r550614;
return r550615;
}
double f(double x, double y, double z, double t, double a) {
double r550616 = x;
double r550617 = y;
double r550618 = cbrt(r550617);
double r550619 = a;
double r550620 = t;
double r550621 = r550619 - r550620;
double r550622 = r550618 / r550621;
double r550623 = z;
double r550624 = r550623 - r550620;
double r550625 = r550622 * r550624;
double r550626 = r550618 * r550618;
double r550627 = r550625 * r550626;
double r550628 = r550616 + r550627;
return r550628;
}




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 | 1.6 |
Initial program 10.6
rmApplied associate-/l*1.2
rmApplied *-un-lft-identity1.2
Applied *-un-lft-identity1.2
Applied times-frac1.2
Applied add-cube-cbrt1.7
Applied times-frac1.7
Simplified1.7
Simplified1.6
Final simplification1.6
herbie shell --seed 2019194
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTicks from plot-0.2.3.4, B"
:herbie-target
(+ x (/ y (/ (- a t) (- z t))))
(+ x (/ (* y (- z t)) (- a t))))