\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(x \cdot \log \left(\sqrt[3]{y}\right) + 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 r321018 = x;
double r321019 = y;
double r321020 = log(r321019);
double r321021 = r321018 * r321020;
double r321022 = z;
double r321023 = 1.0;
double r321024 = r321023 - r321019;
double r321025 = log(r321024);
double r321026 = r321022 * r321025;
double r321027 = r321021 + r321026;
double r321028 = t;
double r321029 = r321027 - r321028;
return r321029;
}
double f(double x, double y, double z, double t) {
double r321030 = x;
double r321031 = y;
double r321032 = cbrt(r321031);
double r321033 = r321032 * r321032;
double r321034 = log(r321033);
double r321035 = r321030 * r321034;
double r321036 = log(r321032);
double r321037 = r321030 * r321036;
double r321038 = z;
double r321039 = 1.0;
double r321040 = log(r321039);
double r321041 = r321039 * r321031;
double r321042 = 0.5;
double r321043 = 2.0;
double r321044 = pow(r321031, r321043);
double r321045 = pow(r321039, r321043);
double r321046 = r321044 / r321045;
double r321047 = r321042 * r321046;
double r321048 = r321041 + r321047;
double r321049 = r321040 - r321048;
double r321050 = r321038 * r321049;
double r321051 = r321037 + r321050;
double r321052 = r321035 + r321051;
double r321053 = t;
double r321054 = r321052 - r321053;
return r321054;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 9.1 |
|---|---|
| Target | 0.3 |
| Herbie | 0.5 |
Initial program 9.1
Taylor expanded around 0 0.4
rmApplied add-cube-cbrt0.4
Applied log-prod0.5
Applied distribute-lft-in0.5
Applied associate-+l+0.5
Final simplification0.5
herbie shell --seed 2020046
(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))