x + \frac{\left(y - x\right) \cdot z}{t}x - \frac{\sqrt[3]{z} \cdot \sqrt[3]{z}}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \left(\frac{1}{\sqrt[3]{\sqrt[3]{t} \cdot \sqrt[3]{t}}} \cdot \left(\frac{\sqrt[3]{z}}{\sqrt[3]{\sqrt[3]{t}}} \cdot \left(x - y\right)\right)\right)double f(double x, double y, double z, double t) {
double r378557 = x;
double r378558 = y;
double r378559 = r378558 - r378557;
double r378560 = z;
double r378561 = r378559 * r378560;
double r378562 = t;
double r378563 = r378561 / r378562;
double r378564 = r378557 + r378563;
return r378564;
}
double f(double x, double y, double z, double t) {
double r378565 = x;
double r378566 = z;
double r378567 = cbrt(r378566);
double r378568 = r378567 * r378567;
double r378569 = t;
double r378570 = cbrt(r378569);
double r378571 = r378570 * r378570;
double r378572 = r378568 / r378571;
double r378573 = 1.0;
double r378574 = cbrt(r378571);
double r378575 = r378573 / r378574;
double r378576 = cbrt(r378570);
double r378577 = r378567 / r378576;
double r378578 = y;
double r378579 = r378565 - r378578;
double r378580 = r378577 * r378579;
double r378581 = r378575 * r378580;
double r378582 = r378572 * r378581;
double r378583 = r378565 - r378582;
return r378583;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.7 |
|---|---|
| Target | 1.9 |
| Herbie | 1.7 |
Initial program 6.7
Simplified2.3
rmApplied add-cube-cbrt2.8
Applied add-cube-cbrt2.9
Applied times-frac2.9
Applied associate-*l*1.0
Simplified2.1
rmApplied *-un-lft-identity2.1
Applied add-cube-cbrt2.1
Applied cbrt-prod2.2
Applied times-frac2.2
Applied *-un-lft-identity2.2
Applied cbrt-prod2.2
Applied times-frac1.9
Simplified1.9
Simplified1.7
Final simplification1.7
herbie shell --seed 2019195
(FPCore (x y z t)
:name "Numeric.Histogram:binBounds from Chart-1.5.3"
:herbie-target
(if (< x -9.025511195533005e-135) (- x (* (/ z t) (- x y))) (if (< x 4.275032163700715e-250) (+ x (* (/ (- y x) t) z)) (+ x (/ (- y x) (/ t z)))))
(+ x (/ (* (- y x) z) t)))