x + \frac{y \cdot \left(z - t\right)}{a - t}x + \frac{\frac{y}{\frac{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}{\sqrt[3]{z - t} \cdot \sqrt[3]{z - t}}}}{\frac{\sqrt[3]{a - t}}{\sqrt[3]{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
(/
(/
y
(/ (* (cbrt (- a t)) (cbrt (- a t))) (* (cbrt (- z t)) (cbrt (- z t)))))
(/ (cbrt (- a t)) (cbrt (- 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 + ((y / ((cbrt(a - t) * cbrt(a - t)) / (cbrt(z - t) * cbrt(z - t)))) / (cbrt(a - t) / cbrt(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.2 |
| Herbie | 0.5 |
Initial program 10.9
rmApplied associate-/l*_binary641.2
rmApplied add-cube-cbrt_binary641.7
Applied add-cube-cbrt_binary641.6
Applied times-frac_binary641.6
Applied associate-/r*_binary640.5
Final simplification0.5
herbie shell --seed 2020273
(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))))