\frac{x}{y} \cdot \left(z - t\right) + t\left(\frac{\sqrt[3]{x}}{\sqrt[3]{y}} \cdot \left(z - t\right)\right) \cdot \frac{\sqrt[3]{x} \cdot \sqrt[3]{\left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot \sqrt[3]{x}}}{\sqrt[3]{y} \cdot \sqrt[3]{y}} + tdouble f(double x, double y, double z, double t) {
double r7909149 = x;
double r7909150 = y;
double r7909151 = r7909149 / r7909150;
double r7909152 = z;
double r7909153 = t;
double r7909154 = r7909152 - r7909153;
double r7909155 = r7909151 * r7909154;
double r7909156 = r7909155 + r7909153;
return r7909156;
}
double f(double x, double y, double z, double t) {
double r7909157 = x;
double r7909158 = cbrt(r7909157);
double r7909159 = y;
double r7909160 = cbrt(r7909159);
double r7909161 = r7909158 / r7909160;
double r7909162 = z;
double r7909163 = t;
double r7909164 = r7909162 - r7909163;
double r7909165 = r7909161 * r7909164;
double r7909166 = r7909158 * r7909158;
double r7909167 = r7909166 * r7909158;
double r7909168 = cbrt(r7909167);
double r7909169 = r7909158 * r7909168;
double r7909170 = r7909160 * r7909160;
double r7909171 = r7909169 / r7909170;
double r7909172 = r7909165 * r7909171;
double r7909173 = r7909172 + r7909163;
return r7909173;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 1.9 |
|---|---|
| Target | 2.1 |
| Herbie | 0.9 |
Initial program 1.9
rmApplied add-cube-cbrt2.5
Applied add-cube-cbrt2.6
Applied times-frac2.6
Applied associate-*l*0.9
rmApplied add-cbrt-cube0.9
Final simplification0.9
herbie shell --seed 2019156 +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))