\frac{x}{y} \cdot \left(z - t\right) + t\left(\left(\left(\sqrt[3]{z - t} \cdot \left(\sqrt[3]{\sqrt[3]{z - t} \cdot \sqrt[3]{z - t}} \cdot \sqrt[3]{\sqrt[3]{z - t}}\right)\right) \cdot \frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{\sqrt[3]{y} \cdot \sqrt[3]{y}}\right) \cdot \frac{\sqrt[3]{x}}{\sqrt[3]{y}}\right) \cdot \sqrt[3]{z - t} + tdouble f(double x, double y, double z, double t) {
double r410461 = x;
double r410462 = y;
double r410463 = r410461 / r410462;
double r410464 = z;
double r410465 = t;
double r410466 = r410464 - r410465;
double r410467 = r410463 * r410466;
double r410468 = r410467 + r410465;
return r410468;
}
double f(double x, double y, double z, double t) {
double r410469 = z;
double r410470 = t;
double r410471 = r410469 - r410470;
double r410472 = cbrt(r410471);
double r410473 = r410472 * r410472;
double r410474 = cbrt(r410473);
double r410475 = cbrt(r410472);
double r410476 = r410474 * r410475;
double r410477 = r410472 * r410476;
double r410478 = x;
double r410479 = cbrt(r410478);
double r410480 = r410479 * r410479;
double r410481 = y;
double r410482 = cbrt(r410481);
double r410483 = r410482 * r410482;
double r410484 = r410480 / r410483;
double r410485 = r410477 * r410484;
double r410486 = r410479 / r410482;
double r410487 = r410485 * r410486;
double r410488 = r410487 * r410472;
double r410489 = r410488 + r410470;
return r410489;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 2.2 |
|---|---|
| Target | 2.3 |
| Herbie | 1.5 |
Initial program 2.2
rmApplied add-cube-cbrt2.8
Applied associate-*r*2.8
Simplified2.8
rmApplied add-cube-cbrt2.8
Applied cbrt-prod2.8
rmApplied add-cube-cbrt2.9
Applied add-cube-cbrt3.0
Applied times-frac3.0
Applied associate-*r*1.5
Final simplification1.5
herbie shell --seed 2019212
(FPCore (x y z t)
:name "Numeric.Signal.Multichannel:$cget from hsignal-0.2.7.1"
:precision binary64
:herbie-target
(if (< z 2.7594565545626922e-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))