x + \left(y - x\right) \cdot \frac{z}{t}x + \left(\sqrt{\frac{\sqrt[3]{z} \cdot \sqrt[3]{z}}{\sqrt[3]{t} \cdot \sqrt[3]{t}}} \cdot \left(\left(y - x\right) \cdot \left|\frac{\sqrt[3]{z}}{\sqrt[3]{t}}\right|\right)\right) \cdot \frac{\sqrt[3]{z}}{\sqrt[3]{t}}double f(double x, double y, double z, double t) {
double r493506 = x;
double r493507 = y;
double r493508 = r493507 - r493506;
double r493509 = z;
double r493510 = t;
double r493511 = r493509 / r493510;
double r493512 = r493508 * r493511;
double r493513 = r493506 + r493512;
return r493513;
}
double f(double x, double y, double z, double t) {
double r493514 = x;
double r493515 = z;
double r493516 = cbrt(r493515);
double r493517 = r493516 * r493516;
double r493518 = t;
double r493519 = cbrt(r493518);
double r493520 = r493519 * r493519;
double r493521 = r493517 / r493520;
double r493522 = sqrt(r493521);
double r493523 = y;
double r493524 = r493523 - r493514;
double r493525 = r493516 / r493519;
double r493526 = fabs(r493525);
double r493527 = r493524 * r493526;
double r493528 = r493522 * r493527;
double r493529 = r493528 * r493525;
double r493530 = r493514 + r493529;
return r493530;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 2.1 |
|---|---|
| Target | 2.2 |
| Herbie | 1.0 |
Initial program 2.1
rmApplied add-cube-cbrt2.6
Applied add-cube-cbrt2.7
Applied times-frac2.7
Applied associate-*r*1.0
Simplified1.0
rmApplied add-sqr-sqrt1.0
Applied associate-*l*1.0
Simplified1.0
Final simplification1.0
herbie shell --seed 2019212
(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))))