\left(x \cdot \log y + z \cdot \log \left(1 - y\right)\right) - t
\left(\left(3 \cdot x\right) \cdot \log \left(\sqrt[3]{-y} \cdot \sqrt[3]{-1}\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 r271985 = x;
double r271986 = y;
double r271987 = log(r271986);
double r271988 = r271985 * r271987;
double r271989 = z;
double r271990 = 1.0;
double r271991 = r271990 - r271986;
double r271992 = log(r271991);
double r271993 = r271989 * r271992;
double r271994 = r271988 + r271993;
double r271995 = t;
double r271996 = r271994 - r271995;
return r271996;
}
double f(double x, double y, double z, double t) {
double r271997 = 3.0;
double r271998 = x;
double r271999 = r271997 * r271998;
double r272000 = y;
double r272001 = -r272000;
double r272002 = cbrt(r272001);
double r272003 = -1.0;
double r272004 = cbrt(r272003);
double r272005 = r272002 * r272004;
double r272006 = log(r272005);
double r272007 = r271999 * r272006;
double r272008 = z;
double r272009 = 1.0;
double r272010 = log(r272009);
double r272011 = r272009 * r272000;
double r272012 = 0.5;
double r272013 = 2.0;
double r272014 = pow(r272000, r272013);
double r272015 = pow(r272009, r272013);
double r272016 = r272014 / r272015;
double r272017 = r272012 * r272016;
double r272018 = r272011 + r272017;
double r272019 = r272010 - r272018;
double r272020 = r272008 * r272019;
double r272021 = r272007 + r272020;
double r272022 = t;
double r272023 = r272021 - r272022;
return r272023;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 9.2 |
|---|---|
| Target | 0.3 |
| Herbie | 0.4 |
Initial program 9.2
Taylor expanded around 0 0.3
rmApplied add-cube-cbrt0.3
Applied log-prod0.4
Applied distribute-lft-in0.4
Simplified0.4
Taylor expanded around -inf 64.0
Simplified0.4
Final simplification0.4
herbie shell --seed 2019212
(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))