x + y \cdot \frac{z - t}{a - t}\frac{\sqrt[3]{z - t} \cdot \sqrt[3]{z - t}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}} \cdot \frac{y}{\frac{\sqrt[3]{a - t}}{\sqrt[3]{z - t}}} + xdouble f(double x, double y, double z, double t, double a) {
double r539247 = x;
double r539248 = y;
double r539249 = z;
double r539250 = t;
double r539251 = r539249 - r539250;
double r539252 = a;
double r539253 = r539252 - r539250;
double r539254 = r539251 / r539253;
double r539255 = r539248 * r539254;
double r539256 = r539247 + r539255;
return r539256;
}
double f(double x, double y, double z, double t, double a) {
double r539257 = z;
double r539258 = t;
double r539259 = r539257 - r539258;
double r539260 = cbrt(r539259);
double r539261 = r539260 * r539260;
double r539262 = a;
double r539263 = r539262 - r539258;
double r539264 = cbrt(r539263);
double r539265 = r539264 * r539264;
double r539266 = r539261 / r539265;
double r539267 = y;
double r539268 = r539264 / r539260;
double r539269 = r539267 / r539268;
double r539270 = r539266 * r539269;
double r539271 = x;
double r539272 = r539270 + r539271;
return r539272;
}




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.5 |
| Herbie | 0.6 |
Initial program 1.3
Simplified1.3
rmApplied clear-num1.4
rmApplied fma-udef1.4
Simplified1.2
rmApplied add-cube-cbrt1.7
Applied add-cube-cbrt1.6
Applied times-frac1.6
Applied *-un-lft-identity1.6
Applied times-frac0.6
Simplified0.6
Final simplification0.6
herbie shell --seed 2020033 +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)))))