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(\left(\frac{\sqrt[3]{y - x}}{\sqrt[3]{t}} \cdot \frac{\sqrt[3]{z} \cdot \sqrt[3]{z}}{\sqrt[3]{\sqrt[3]{t} \cdot \sqrt[3]{t}}}\right) \cdot \frac{\sqrt[3]{z}}{\sqrt[3]{\sqrt[3]{t}}}\right)double f(double x, double y, double z, double t) {
double r360492 = x;
double r360493 = y;
double r360494 = r360493 - r360492;
double r360495 = z;
double r360496 = t;
double r360497 = r360495 / r360496;
double r360498 = r360494 * r360497;
double r360499 = r360492 + r360498;
return r360499;
}
double f(double x, double y, double z, double t) {
double r360500 = x;
double r360501 = y;
double r360502 = r360501 - r360500;
double r360503 = cbrt(r360502);
double r360504 = r360503 * r360503;
double r360505 = t;
double r360506 = cbrt(r360505);
double r360507 = r360504 / r360506;
double r360508 = r360503 / r360506;
double r360509 = z;
double r360510 = cbrt(r360509);
double r360511 = r360510 * r360510;
double r360512 = r360506 * r360506;
double r360513 = cbrt(r360512);
double r360514 = r360511 / r360513;
double r360515 = r360508 * r360514;
double r360516 = cbrt(r360506);
double r360517 = r360510 / r360516;
double r360518 = r360515 * r360517;
double r360519 = r360507 * r360518;
double r360520 = r360500 + r360519;
return r360520;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 2.2 |
|---|---|
| Target | 2.4 |
| Herbie | 1.2 |
Initial program 2.2
rmApplied add-cube-cbrt2.7
Applied *-un-lft-identity2.7
Applied times-frac2.7
Applied associate-*r*4.7
Simplified4.7
rmApplied add-cube-cbrt4.8
Applied times-frac4.8
Applied associate-*l*1.2
rmApplied add-cube-cbrt1.3
Applied cbrt-prod1.3
Applied add-cube-cbrt1.3
Applied times-frac1.3
Applied associate-*r*1.2
Final simplification1.2
herbie shell --seed 2019323
(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))))