x + y \cdot \frac{z - t}{z - a}\frac{y}{\frac{\sqrt[3]{z - a} \cdot \sqrt[3]{z - a}}{\sqrt[3]{z - t} \cdot \sqrt[3]{z - t}}} \cdot \frac{1}{\frac{\sqrt[3]{z - a}}{\sqrt[3]{z - t}}} + xdouble f(double x, double y, double z, double t, double a) {
double r397404 = x;
double r397405 = y;
double r397406 = z;
double r397407 = t;
double r397408 = r397406 - r397407;
double r397409 = a;
double r397410 = r397406 - r397409;
double r397411 = r397408 / r397410;
double r397412 = r397405 * r397411;
double r397413 = r397404 + r397412;
return r397413;
}
double f(double x, double y, double z, double t, double a) {
double r397414 = y;
double r397415 = z;
double r397416 = a;
double r397417 = r397415 - r397416;
double r397418 = cbrt(r397417);
double r397419 = r397418 * r397418;
double r397420 = t;
double r397421 = r397415 - r397420;
double r397422 = cbrt(r397421);
double r397423 = r397422 * r397422;
double r397424 = r397419 / r397423;
double r397425 = r397414 / r397424;
double r397426 = 1.0;
double r397427 = r397418 / r397422;
double r397428 = r397426 / r397427;
double r397429 = r397425 * r397428;
double r397430 = x;
double r397431 = r397429 + r397430;
return r397431;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 1.4 |
|---|---|
| Target | 1.3 |
| Herbie | 0.6 |
Initial program 1.4
rmApplied clear-num1.5
rmApplied add-cube-cbrt2.0
Applied add-cube-cbrt1.8
Applied times-frac1.8
Applied add-cube-cbrt1.8
Applied times-frac1.8
Applied associate-*r*0.6
Simplified0.6
Final simplification0.6
herbie shell --seed 2019326 +o rules:numerics
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisLine from plot-0.2.3.4, A"
:precision binary64
:herbie-target
(+ x (/ y (/ (- z a) (- z t))))
(+ x (* y (/ (- z t) (- z a)))))