x + y \cdot \frac{z - t}{a - t}\frac{\sqrt[3]{z - t}}{\frac{\sqrt[3]{a - t}}{y}} \cdot \left(\frac{\sqrt[3]{z - t}}{\sqrt[3]{a - t}} \cdot \frac{\sqrt[3]{z - t}}{\sqrt[3]{a - t}}\right) + xdouble f(double x, double y, double z, double t, double a) {
double r9813668 = x;
double r9813669 = y;
double r9813670 = z;
double r9813671 = t;
double r9813672 = r9813670 - r9813671;
double r9813673 = a;
double r9813674 = r9813673 - r9813671;
double r9813675 = r9813672 / r9813674;
double r9813676 = r9813669 * r9813675;
double r9813677 = r9813668 + r9813676;
return r9813677;
}
double f(double x, double y, double z, double t, double a) {
double r9813678 = z;
double r9813679 = t;
double r9813680 = r9813678 - r9813679;
double r9813681 = cbrt(r9813680);
double r9813682 = a;
double r9813683 = r9813682 - r9813679;
double r9813684 = cbrt(r9813683);
double r9813685 = y;
double r9813686 = r9813684 / r9813685;
double r9813687 = r9813681 / r9813686;
double r9813688 = r9813681 / r9813684;
double r9813689 = r9813688 * r9813688;
double r9813690 = r9813687 * r9813689;
double r9813691 = x;
double r9813692 = r9813690 + r9813691;
return r9813692;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 1.2 |
|---|---|
| Target | 0.4 |
| Herbie | 1.0 |
Initial program 1.2
Simplified1.2
rmApplied *-un-lft-identity1.2
Applied add-cube-cbrt1.8
Applied times-frac1.7
Simplified1.7
rmApplied fma-udef1.7
Simplified2.9
rmApplied *-un-lft-identity2.9
Applied add-cube-cbrt3.3
Applied times-frac3.3
Applied add-cube-cbrt3.3
Applied times-frac1.0
Simplified1.0
Final simplification1.0
herbie shell --seed 2019156 +o rules:numerics
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisLine from plot-0.2.3.4, B"
:herbie-target
(if (< y -8.508084860551241e-17) (+ x (* y (/ (- z t) (- a t)))) (if (< y 2.894426862792089e-49) (+ x (* (* y (- z t)) (/ 1 (- a t)))) (+ x (* y (/ (- z t) (- a t))))))
(+ x (* y (/ (- z t) (- a t)))))