x + \frac{y \cdot \left(z - t\right)}{a - t}x + \frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}} \cdot \frac{\sqrt[3]{y}}{\frac{\sqrt[3]{a - t}}{z - t}}(FPCore (x y z t a) :precision binary64 (+ x (/ (* y (- z t)) (- a t))))
(FPCore (x y z t a) :precision binary64 (+ x (* (/ (* (cbrt y) (cbrt y)) (* (cbrt (- a t)) (cbrt (- a t)))) (/ (cbrt y) (/ (cbrt (- a t)) (- z t))))))
double code(double x, double y, double z, double t, double a) {
return x + ((y * (z - t)) / (a - t));
}
double code(double x, double y, double z, double t, double a) {
return x + (((cbrt(y) * cbrt(y)) / (cbrt(a - t) * cbrt(a - t))) * (cbrt(y) / (cbrt(a - t) / (z - t))));
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.9 |
|---|---|
| Target | 1.3 |
| Herbie | 1.3 |
Initial program 10.9
rmApplied associate-/l*_binary64_174141.3
rmApplied *-un-lft-identity_binary64_174691.3
Applied add-cube-cbrt_binary64_175041.8
Applied times-frac_binary64_174751.8
Applied add-cube-cbrt_binary64_175041.9
Applied times-frac_binary64_174751.3
Simplified1.3
Final simplification1.3
herbie shell --seed 2020342
(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))))