\left(x \cdot \log y + z \cdot \log \left(1 - y\right)\right) - t
\left(\left(x \cdot \left(2 \cdot \log \left(\sqrt[3]{y}\right)\right) + \left(x \cdot \log \left(\sqrt[3]{\sqrt[3]{y} \cdot \sqrt[3]{y}}\right) + x \cdot \log \left(\sqrt[3]{\sqrt[3]{y}}\right)\right)\right) + z \cdot \left(\log 1 - \left(1 \cdot y + \frac{1}{2} \cdot \frac{{y}^{2}}{{1}^{2}}\right)\right)\right) - tdouble f(double x, double y, double z, double t) {
double r420707 = x;
double r420708 = y;
double r420709 = log(r420708);
double r420710 = r420707 * r420709;
double r420711 = z;
double r420712 = 1.0;
double r420713 = r420712 - r420708;
double r420714 = log(r420713);
double r420715 = r420711 * r420714;
double r420716 = r420710 + r420715;
double r420717 = t;
double r420718 = r420716 - r420717;
return r420718;
}
double f(double x, double y, double z, double t) {
double r420719 = x;
double r420720 = 2.0;
double r420721 = y;
double r420722 = cbrt(r420721);
double r420723 = log(r420722);
double r420724 = r420720 * r420723;
double r420725 = r420719 * r420724;
double r420726 = r420722 * r420722;
double r420727 = cbrt(r420726);
double r420728 = log(r420727);
double r420729 = r420719 * r420728;
double r420730 = cbrt(r420722);
double r420731 = log(r420730);
double r420732 = r420719 * r420731;
double r420733 = r420729 + r420732;
double r420734 = r420725 + r420733;
double r420735 = z;
double r420736 = 1.0;
double r420737 = log(r420736);
double r420738 = r420736 * r420721;
double r420739 = 0.5;
double r420740 = pow(r420721, r420720);
double r420741 = pow(r420736, r420720);
double r420742 = r420740 / r420741;
double r420743 = r420739 * r420742;
double r420744 = r420738 + r420743;
double r420745 = r420737 - r420744;
double r420746 = r420735 * r420745;
double r420747 = r420734 + r420746;
double r420748 = t;
double r420749 = r420747 - r420748;
return r420749;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 9.6 |
|---|---|
| Target | 0.3 |
| Herbie | 0.4 |
Initial program 9.6
Taylor expanded around 0 0.4
rmApplied add-cube-cbrt0.4
Applied log-prod0.4
Applied distribute-lft-in0.4
Simplified0.4
rmApplied add-cube-cbrt0.4
Applied cbrt-prod0.4
Applied log-prod0.4
Applied distribute-lft-in0.4
Final simplification0.4
herbie shell --seed 2020025
(FPCore (x y z t)
:name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, B"
:precision binary64
:herbie-target
(- (* (- z) (+ (+ (* 0.5 (* y y)) y) (* (/ 0.3333333333333333 (* 1 (* 1 1))) (* y (* y y))))) (- t (* x (log y))))
(- (+ (* x (log y)) (* z (log (- 1 y)))) t))