\left(x \cdot \log y + z \cdot \log \left(1 - y\right)\right) - t
\left(x \cdot \log \left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) + \left(\log \left(1 \cdot \left({\left({y}^{\frac{1}{3}}\right)}^{\frac{2}{3}} \cdot {\left(\sqrt[3]{y}\right)}^{\frac{1}{3}}\right)\right) \cdot x + z \cdot \left(\log 1 - \left(1 \cdot y + \frac{1}{2} \cdot \frac{{y}^{2}}{{1}^{2}}\right)\right)\right)\right) - tdouble f(double x, double y, double z, double t) {
double r518732 = x;
double r518733 = y;
double r518734 = log(r518733);
double r518735 = r518732 * r518734;
double r518736 = z;
double r518737 = 1.0;
double r518738 = r518737 - r518733;
double r518739 = log(r518738);
double r518740 = r518736 * r518739;
double r518741 = r518735 + r518740;
double r518742 = t;
double r518743 = r518741 - r518742;
return r518743;
}
double f(double x, double y, double z, double t) {
double r518744 = x;
double r518745 = y;
double r518746 = cbrt(r518745);
double r518747 = r518746 * r518746;
double r518748 = log(r518747);
double r518749 = r518744 * r518748;
double r518750 = 1.0;
double r518751 = 0.3333333333333333;
double r518752 = pow(r518745, r518751);
double r518753 = 0.6666666666666666;
double r518754 = pow(r518752, r518753);
double r518755 = pow(r518746, r518751);
double r518756 = r518754 * r518755;
double r518757 = r518750 * r518756;
double r518758 = log(r518757);
double r518759 = r518758 * r518744;
double r518760 = z;
double r518761 = 1.0;
double r518762 = log(r518761);
double r518763 = r518761 * r518745;
double r518764 = 0.5;
double r518765 = 2.0;
double r518766 = pow(r518745, r518765);
double r518767 = pow(r518761, r518765);
double r518768 = r518766 / r518767;
double r518769 = r518764 * r518768;
double r518770 = r518763 + r518769;
double r518771 = r518762 - r518770;
double r518772 = r518760 * r518771;
double r518773 = r518759 + r518772;
double r518774 = r518749 + r518773;
double r518775 = t;
double r518776 = r518774 - r518775;
return r518776;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 9.3 |
|---|---|
| Target | 0.2 |
| Herbie | 0.3 |
Initial program 9.3
Taylor expanded around 0 0.3
rmApplied add-cube-cbrt0.3
Applied log-prod0.4
Applied distribute-lft-in0.4
Applied associate-+l+0.4
Simplified0.4
rmApplied *-un-lft-identity0.4
Applied cbrt-prod0.4
Simplified0.4
Simplified0.3
rmApplied add-cube-cbrt0.3
Simplified0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2020100
(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))