x + y \cdot \frac{z - t}{a - t}x + \left(y \cdot \frac{\sqrt[3]{z - t} \cdot \sqrt[3]{z - t}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}\right) \cdot \frac{\sqrt[3]{z - t}}{\sqrt[3]{a - t}}double f(double x, double y, double z, double t, double a) {
double r645197 = x;
double r645198 = y;
double r645199 = z;
double r645200 = t;
double r645201 = r645199 - r645200;
double r645202 = a;
double r645203 = r645202 - r645200;
double r645204 = r645201 / r645203;
double r645205 = r645198 * r645204;
double r645206 = r645197 + r645205;
return r645206;
}
double f(double x, double y, double z, double t, double a) {
double r645207 = x;
double r645208 = y;
double r645209 = z;
double r645210 = t;
double r645211 = r645209 - r645210;
double r645212 = cbrt(r645211);
double r645213 = r645212 * r645212;
double r645214 = a;
double r645215 = r645214 - r645210;
double r645216 = cbrt(r645215);
double r645217 = r645216 * r645216;
double r645218 = r645213 / r645217;
double r645219 = r645208 * r645218;
double r645220 = r645212 / r645216;
double r645221 = r645219 * r645220;
double r645222 = r645207 + r645221;
return r645222;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 1.5 |
|---|---|
| Target | 0.4 |
| Herbie | 0.6 |
Initial program 1.5
rmApplied add-cube-cbrt2.0
Applied add-cube-cbrt1.8
Applied times-frac1.8
Applied associate-*r*0.6
Final simplification0.6
herbie shell --seed 2019353 +o rules:numerics
(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)))))