\frac{x}{y} \cdot \left(z - t\right) + t\left(\sqrt[3]{\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)} \cdot \sqrt[3]{\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)}\right) \cdot \sqrt[3]{\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 r313752 = x;
double r313753 = y;
double r313754 = r313752 / r313753;
double r313755 = z;
double r313756 = t;
double r313757 = r313755 - r313756;
double r313758 = r313754 * r313757;
double r313759 = r313758 + r313756;
return r313759;
}
double f(double x, double y, double z, double t) {
double r313760 = x;
double r313761 = cbrt(r313760);
double r313762 = r313761 * r313761;
double r313763 = y;
double r313764 = cbrt(r313763);
double r313765 = r313764 * r313764;
double r313766 = r313762 / r313765;
double r313767 = r313761 / r313764;
double r313768 = z;
double r313769 = t;
double r313770 = r313768 - r313769;
double r313771 = r313767 * r313770;
double r313772 = r313766 * r313771;
double r313773 = cbrt(r313772);
double r313774 = r313773 * r313773;
double r313775 = r313774 * r313773;
double r313776 = r313775 + r313769;
return r313776;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 2.0 |
|---|---|
| Target | 2.3 |
| Herbie | 1.1 |
Initial program 2.0
rmApplied add-cube-cbrt2.6
Applied add-cube-cbrt2.7
Applied times-frac2.7
Applied associate-*l*1.0
rmApplied add-cube-cbrt1.1
Final simplification1.1
herbie shell --seed 2019199 +o rules:numerics
(FPCore (x y z t)
:name "Numeric.Signal.Multichannel:$cget from hsignal-0.2.7.1"
: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))