\left(x \cdot \log y + z \cdot \log \left(1 - y\right)\right) - t
\left(\left(z \cdot \left(\log 1 - \left(1 \cdot y + \frac{1}{2} \cdot \frac{{y}^{2}}{{1}^{2}}\right)\right) - t\right) + x \cdot \left(2 \cdot \log \left({y}^{\frac{1}{3}}\right)\right)\right) + \left(3 \cdot \log \left(\sqrt[3]{\sqrt[3]{y}}\right)\right) \cdot xdouble f(double x, double y, double z, double t) {
double r361823 = x;
double r361824 = y;
double r361825 = log(r361824);
double r361826 = r361823 * r361825;
double r361827 = z;
double r361828 = 1.0;
double r361829 = r361828 - r361824;
double r361830 = log(r361829);
double r361831 = r361827 * r361830;
double r361832 = r361826 + r361831;
double r361833 = t;
double r361834 = r361832 - r361833;
return r361834;
}
double f(double x, double y, double z, double t) {
double r361835 = z;
double r361836 = 1.0;
double r361837 = log(r361836);
double r361838 = y;
double r361839 = r361836 * r361838;
double r361840 = 0.5;
double r361841 = 2.0;
double r361842 = pow(r361838, r361841);
double r361843 = pow(r361836, r361841);
double r361844 = r361842 / r361843;
double r361845 = r361840 * r361844;
double r361846 = r361839 + r361845;
double r361847 = r361837 - r361846;
double r361848 = r361835 * r361847;
double r361849 = t;
double r361850 = r361848 - r361849;
double r361851 = x;
double r361852 = 0.3333333333333333;
double r361853 = pow(r361838, r361852);
double r361854 = log(r361853);
double r361855 = r361841 * r361854;
double r361856 = r361851 * r361855;
double r361857 = r361850 + r361856;
double r361858 = 3.0;
double r361859 = cbrt(r361838);
double r361860 = cbrt(r361859);
double r361861 = log(r361860);
double r361862 = r361858 * r361861;
double r361863 = r361862 * r361851;
double r361864 = r361857 + r361863;
return r361864;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 9.4 |
|---|---|
| Target | 0.3 |
| Herbie | 0.4 |
Initial program 9.4
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 log-prod0.4
Applied distribute-lft-in0.4
Simplified0.4
rmApplied pow1/30.4
Final simplification0.4
herbie shell --seed 2019294
(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))