\left(x \cdot \log y + z \cdot \log \left(1 - y\right)\right) - t
\left(x \cdot \log \left({\left({y}^{\frac{2}{3}}\right)}^{1}\right) + \left(\log \left(\sqrt[3]{y}\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 r419963 = x;
double r419964 = y;
double r419965 = log(r419964);
double r419966 = r419963 * r419965;
double r419967 = z;
double r419968 = 1.0;
double r419969 = r419968 - r419964;
double r419970 = log(r419969);
double r419971 = r419967 * r419970;
double r419972 = r419966 + r419971;
double r419973 = t;
double r419974 = r419972 - r419973;
return r419974;
}
double f(double x, double y, double z, double t) {
double r419975 = x;
double r419976 = y;
double r419977 = 0.6666666666666666;
double r419978 = pow(r419976, r419977);
double r419979 = 1.0;
double r419980 = pow(r419978, r419979);
double r419981 = log(r419980);
double r419982 = r419975 * r419981;
double r419983 = cbrt(r419976);
double r419984 = log(r419983);
double r419985 = r419984 * r419975;
double r419986 = z;
double r419987 = 1.0;
double r419988 = log(r419987);
double r419989 = r419987 * r419976;
double r419990 = 0.5;
double r419991 = 2.0;
double r419992 = pow(r419976, r419991);
double r419993 = pow(r419987, r419991);
double r419994 = r419992 / r419993;
double r419995 = r419990 * r419994;
double r419996 = r419989 + r419995;
double r419997 = r419988 - r419996;
double r419998 = r419986 * r419997;
double r419999 = r419985 + r419998;
double r420000 = r419982 + r419999;
double r420001 = t;
double r420002 = r420000 - r420001;
return r420002;
}




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 pow10.4
Applied pow10.4
Applied pow-prod-down0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2019322
(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))