\left(x \cdot \log y + z \cdot \log \left(1 - y\right)\right) - t
\left(\left(x \cdot \left(\log \left(\sqrt[3]{\sqrt[3]{y} \cdot \sqrt[3]{y}}\right) \cdot 2\right) + x \cdot \left(\log \left(\sqrt[3]{\sqrt[3]{y}}\right) \cdot 2 + \log \left(\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 r562718 = x;
double r562719 = y;
double r562720 = log(r562719);
double r562721 = r562718 * r562720;
double r562722 = z;
double r562723 = 1.0;
double r562724 = r562723 - r562719;
double r562725 = log(r562724);
double r562726 = r562722 * r562725;
double r562727 = r562721 + r562726;
double r562728 = t;
double r562729 = r562727 - r562728;
return r562729;
}
double f(double x, double y, double z, double t) {
double r562730 = x;
double r562731 = y;
double r562732 = cbrt(r562731);
double r562733 = r562732 * r562732;
double r562734 = cbrt(r562733);
double r562735 = log(r562734);
double r562736 = 2.0;
double r562737 = r562735 * r562736;
double r562738 = r562730 * r562737;
double r562739 = cbrt(r562732);
double r562740 = log(r562739);
double r562741 = r562740 * r562736;
double r562742 = log(r562732);
double r562743 = r562741 + r562742;
double r562744 = r562730 * r562743;
double r562745 = r562738 + r562744;
double r562746 = z;
double r562747 = 1.0;
double r562748 = log(r562747);
double r562749 = r562747 * r562731;
double r562750 = 0.5;
double r562751 = pow(r562731, r562736);
double r562752 = pow(r562747, r562736);
double r562753 = r562751 / r562752;
double r562754 = r562750 * r562753;
double r562755 = r562749 + r562754;
double r562756 = r562748 - r562755;
double r562757 = r562746 * r562756;
double r562758 = r562745 + r562757;
double r562759 = t;
double r562760 = r562758 - r562759;
return r562760;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 9.8 |
|---|---|
| Target | 0.3 |
| Herbie | 0.4 |
Initial program 9.8
Taylor expanded around 0 0.3
rmApplied add-cube-cbrt0.3
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-rgt-in0.4
Applied distribute-lft-in0.3
Applied associate-+l+0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2020089
(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))