\left(x \cdot \log y + z \cdot \log \left(1 - y\right)\right) - t
x \cdot \left(\log \left({y}^{\frac{1}{3}} \cdot \sqrt[3]{y}\right) + \log \left(\sqrt[3]{y}\right)\right) + \left(z \cdot \left(\log 1 - \left(1 \cdot y + \frac{1}{2} \cdot \frac{{y}^{2}}{{1}^{2}}\right)\right) - t\right)double f(double x, double y, double z, double t) {
double r320748 = x;
double r320749 = y;
double r320750 = log(r320749);
double r320751 = r320748 * r320750;
double r320752 = z;
double r320753 = 1.0;
double r320754 = r320753 - r320749;
double r320755 = log(r320754);
double r320756 = r320752 * r320755;
double r320757 = r320751 + r320756;
double r320758 = t;
double r320759 = r320757 - r320758;
return r320759;
}
double f(double x, double y, double z, double t) {
double r320760 = x;
double r320761 = y;
double r320762 = 0.3333333333333333;
double r320763 = pow(r320761, r320762);
double r320764 = cbrt(r320761);
double r320765 = r320763 * r320764;
double r320766 = log(r320765);
double r320767 = log(r320764);
double r320768 = r320766 + r320767;
double r320769 = r320760 * r320768;
double r320770 = z;
double r320771 = 1.0;
double r320772 = log(r320771);
double r320773 = r320771 * r320761;
double r320774 = 0.5;
double r320775 = 2.0;
double r320776 = pow(r320761, r320775);
double r320777 = pow(r320771, r320775);
double r320778 = r320776 / r320777;
double r320779 = r320774 * r320778;
double r320780 = r320773 + r320779;
double r320781 = r320772 - r320780;
double r320782 = r320770 * r320781;
double r320783 = t;
double r320784 = r320782 - r320783;
double r320785 = r320769 + r320784;
return r320785;
}




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
Applied associate-+l+0.4
Simplified0.4
rmApplied pow1/30.4
Final simplification0.4
herbie shell --seed 2019291
(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.333333333333333315 (* 1 (* 1 1))) (* y (* y y))))) (- t (* x (log y))))
(- (+ (* x (log y)) (* z (log (- 1 y)))) t))