\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]{x}}{\sqrt[3]{y} \cdot \sqrt[3]{y}} + tdouble f(double x, double y, double z, double t) {
double r19211593 = x;
double r19211594 = y;
double r19211595 = r19211593 / r19211594;
double r19211596 = z;
double r19211597 = t;
double r19211598 = r19211596 - r19211597;
double r19211599 = r19211595 * r19211598;
double r19211600 = r19211599 + r19211597;
return r19211600;
}
double f(double x, double y, double z, double t) {
double r19211601 = x;
double r19211602 = cbrt(r19211601);
double r19211603 = y;
double r19211604 = cbrt(r19211603);
double r19211605 = r19211602 / r19211604;
double r19211606 = z;
double r19211607 = t;
double r19211608 = r19211606 - r19211607;
double r19211609 = r19211605 * r19211608;
double r19211610 = r19211602 * r19211602;
double r19211611 = r19211604 * r19211604;
double r19211612 = r19211610 / r19211611;
double r19211613 = r19211609 * r19211612;
double r19211614 = r19211613 + r19211607;
return r19211614;
}




Bits error versus x




Bits error versus y




Bits error versus z




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