\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(z \cdot \left(\log 1 - y \cdot 1\right) + \left(\frac{\frac{-1}{2}}{\frac{{1}^{2}}{z \cdot {y}^{2}}} + x \cdot \log \left({\left(\frac{1}{{y}^{\frac{2}{3}}}\right)}^{\frac{-1}{3}} \cdot {\left(\frac{1}{\sqrt[3]{y}}\right)}^{\frac{-1}{3}}\right)\right)\right)\right) - tdouble f(double x, double y, double z, double t) {
double r545940 = x;
double r545941 = y;
double r545942 = log(r545941);
double r545943 = r545940 * r545942;
double r545944 = z;
double r545945 = 1.0;
double r545946 = r545945 - r545941;
double r545947 = log(r545946);
double r545948 = r545944 * r545947;
double r545949 = r545943 + r545948;
double r545950 = t;
double r545951 = r545949 - r545950;
return r545951;
}
double f(double x, double y, double z, double t) {
double r545952 = x;
double r545953 = y;
double r545954 = cbrt(r545953);
double r545955 = r545954 * r545954;
double r545956 = log(r545955);
double r545957 = r545952 * r545956;
double r545958 = z;
double r545959 = 1.0;
double r545960 = log(r545959);
double r545961 = r545953 * r545959;
double r545962 = r545960 - r545961;
double r545963 = r545958 * r545962;
double r545964 = -0.5;
double r545965 = 2.0;
double r545966 = pow(r545959, r545965);
double r545967 = pow(r545953, r545965);
double r545968 = r545958 * r545967;
double r545969 = r545966 / r545968;
double r545970 = r545964 / r545969;
double r545971 = 1.0;
double r545972 = 0.6666666666666666;
double r545973 = pow(r545953, r545972);
double r545974 = r545971 / r545973;
double r545975 = -0.3333333333333333;
double r545976 = pow(r545974, r545975);
double r545977 = r545971 / r545954;
double r545978 = pow(r545977, r545975);
double r545979 = r545976 * r545978;
double r545980 = log(r545979);
double r545981 = r545952 * r545980;
double r545982 = r545970 + r545981;
double r545983 = r545963 + r545982;
double r545984 = r545957 + r545983;
double r545985 = t;
double r545986 = r545984 - r545985;
return r545986;
}




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.4
rmApplied add-cube-cbrt0.4
Applied log-prod0.4
Applied distribute-lft-in0.4
Applied associate-+l+0.4
Simplified0.4
Taylor expanded around inf 0.4
rmApplied add-cube-cbrt0.4
Applied add-cube-cbrt0.4
Applied times-frac0.4
Applied unpow-prod-down0.4
Simplified0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2020047
(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))