\frac{x}{y} \cdot \left(z - t\right) + t\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{\sqrt[3]{y} \cdot \sqrt[3]{y}} \cdot \left(\frac{\sqrt[3]{x}}{\sqrt[3]{y}} \cdot \left(z - t\right)\right) + tdouble f(double x, double y, double z, double t) {
double r638824 = x;
double r638825 = y;
double r638826 = r638824 / r638825;
double r638827 = z;
double r638828 = t;
double r638829 = r638827 - r638828;
double r638830 = r638826 * r638829;
double r638831 = r638830 + r638828;
return r638831;
}
double f(double x, double y, double z, double t) {
double r638832 = x;
double r638833 = cbrt(r638832);
double r638834 = r638833 * r638833;
double r638835 = y;
double r638836 = cbrt(r638835);
double r638837 = r638836 * r638836;
double r638838 = r638834 / r638837;
double r638839 = r638833 / r638836;
double r638840 = z;
double r638841 = t;
double r638842 = r638840 - r638841;
double r638843 = r638839 * r638842;
double r638844 = r638838 * r638843;
double r638845 = r638844 + r638841;
return r638845;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 2.1 |
|---|---|
| Target | 2.5 |
| Herbie | 0.9 |
Initial program 2.1
rmApplied add-cube-cbrt2.6
Applied add-cube-cbrt2.8
Applied times-frac2.8
Applied associate-*l*0.9
Final simplification0.9
herbie shell --seed 2020089
(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))