\frac{x}{y} \cdot \left(z - t\right) + tt + \frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{\sqrt[3]{y} \cdot \sqrt[3]{y}} \cdot \frac{z - t}{\frac{\sqrt[3]{y}}{\sqrt[3]{x}}}double f(double x, double y, double z, double t) {
double r323788 = x;
double r323789 = y;
double r323790 = r323788 / r323789;
double r323791 = z;
double r323792 = t;
double r323793 = r323791 - r323792;
double r323794 = r323790 * r323793;
double r323795 = r323794 + r323792;
return r323795;
}
double f(double x, double y, double z, double t) {
double r323796 = t;
double r323797 = x;
double r323798 = cbrt(r323797);
double r323799 = r323798 * r323798;
double r323800 = y;
double r323801 = cbrt(r323800);
double r323802 = r323801 * r323801;
double r323803 = r323799 / r323802;
double r323804 = z;
double r323805 = r323804 - r323796;
double r323806 = r323801 / r323798;
double r323807 = r323805 / r323806;
double r323808 = r323803 * r323807;
double r323809 = r323796 + r323808;
return r323809;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 1.9 |
|---|---|
| Target | 2.3 |
| Herbie | 0.9 |
Initial program 1.9
rmApplied *-un-lft-identity1.9
Applied *-un-lft-identity1.9
Applied times-frac1.9
Applied associate-*l*1.9
Simplified1.8
rmApplied add-cube-cbrt2.4
Applied add-cube-cbrt2.5
Applied times-frac2.5
Applied *-un-lft-identity2.5
Applied times-frac0.9
Simplified0.9
Final simplification0.9
herbie shell --seed 2019325
(FPCore (x y z t)
:name "Numeric.Signal.Multichannel:$cget from hsignal-0.2.7.1"
:precision binary64
:herbie-target
(if (< z 2.759456554562692e-282) (+ (* (/ x y) (- z t)) t) (if (< z 2.326994450874436e-110) (+ (* x (/ (- z t) y)) t) (+ (* (/ x y) (- z t)) t)))
(+ (* (/ x y) (- z t)) t))