x + \left(y - x\right) \cdot \frac{z}{t}x + \frac{\sqrt[3]{y - x} \cdot \sqrt[3]{y - x}}{\sqrt[3]{t}} \cdot \left(\frac{\sqrt[3]{y - x}}{\sqrt[3]{t}} \cdot \frac{z}{\sqrt[3]{t}}\right)double f(double x, double y, double z, double t) {
double r415418 = x;
double r415419 = y;
double r415420 = r415419 - r415418;
double r415421 = z;
double r415422 = t;
double r415423 = r415421 / r415422;
double r415424 = r415420 * r415423;
double r415425 = r415418 + r415424;
return r415425;
}
double f(double x, double y, double z, double t) {
double r415426 = x;
double r415427 = y;
double r415428 = r415427 - r415426;
double r415429 = cbrt(r415428);
double r415430 = r415429 * r415429;
double r415431 = t;
double r415432 = cbrt(r415431);
double r415433 = r415430 / r415432;
double r415434 = r415429 / r415432;
double r415435 = z;
double r415436 = r415435 / r415432;
double r415437 = r415434 * r415436;
double r415438 = r415433 * r415437;
double r415439 = r415426 + r415438;
return r415439;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 2.1 |
|---|---|
| Target | 2.3 |
| Herbie | 1.2 |
Initial program 2.1
rmApplied add-cube-cbrt2.6
Applied *-un-lft-identity2.6
Applied times-frac2.6
Applied associate-*r*4.5
Simplified4.5
rmApplied add-cube-cbrt4.6
Applied times-frac4.6
Applied associate-*l*1.2
Final simplification1.2
herbie shell --seed 2019235 +o rules:numerics
(FPCore (x y z t)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:tickPosition from plot-0.2.3.4"
:precision binary64
:herbie-target
(if (< (* (- y x) (/ z t)) -1013646692435.887) (+ x (/ (- y x) (/ t z))) (if (< (* (- y x) (/ z t)) -0.0) (+ x (/ (* (- y x) z) t)) (+ x (/ (- y x) (/ t z)))))
(+ x (* (- y x) (/ z t))))