x + y \cdot \frac{z - t}{a - t}x + y \cdot \left(\frac{z}{a - t} - \frac{\frac{t}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}}{\sqrt[3]{a - t}}\right)double f(double x, double y, double z, double t, double a) {
double r705680 = x;
double r705681 = y;
double r705682 = z;
double r705683 = t;
double r705684 = r705682 - r705683;
double r705685 = a;
double r705686 = r705685 - r705683;
double r705687 = r705684 / r705686;
double r705688 = r705681 * r705687;
double r705689 = r705680 + r705688;
return r705689;
}
double f(double x, double y, double z, double t, double a) {
double r705690 = x;
double r705691 = y;
double r705692 = z;
double r705693 = a;
double r705694 = t;
double r705695 = r705693 - r705694;
double r705696 = r705692 / r705695;
double r705697 = cbrt(r705695);
double r705698 = r705697 * r705697;
double r705699 = r705694 / r705698;
double r705700 = r705699 / r705697;
double r705701 = r705696 - r705700;
double r705702 = r705691 * r705701;
double r705703 = r705690 + r705702;
return r705703;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 1.3 |
|---|---|
| Target | 0.4 |
| Herbie | 1.6 |
Initial program 1.3
rmApplied div-sub1.3
rmApplied add-cube-cbrt1.6
Applied associate-/r*1.6
Final simplification1.6
herbie shell --seed 2020042
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisLine from plot-0.2.3.4, B"
:precision binary64
: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)))))