\left(x \cdot \log y + z \cdot \log \left(1 - y\right)\right) - t
\left(\left(\left(\log \left(\sqrt[3]{\sqrt[3]{y}}\right) \cdot \left(x \cdot 4\right) + x \cdot \left(\log \left(\sqrt[3]{\sqrt[3]{y}}\right) \cdot 2\right)\right) + \frac{-1}{3} \cdot \left(\left(-\log y\right) \cdot x\right)\right) + \left(z \cdot \left(\log 1 - 1 \cdot y\right) - \frac{1}{2} \cdot \frac{z \cdot {y}^{2}}{{1}^{2}}\right)\right) - tdouble f(double x, double y, double z, double t) {
double r539514 = x;
double r539515 = y;
double r539516 = log(r539515);
double r539517 = r539514 * r539516;
double r539518 = z;
double r539519 = 1.0;
double r539520 = r539519 - r539515;
double r539521 = log(r539520);
double r539522 = r539518 * r539521;
double r539523 = r539517 + r539522;
double r539524 = t;
double r539525 = r539523 - r539524;
return r539525;
}
double f(double x, double y, double z, double t) {
double r539526 = y;
double r539527 = cbrt(r539526);
double r539528 = cbrt(r539527);
double r539529 = log(r539528);
double r539530 = x;
double r539531 = 4.0;
double r539532 = r539530 * r539531;
double r539533 = r539529 * r539532;
double r539534 = 2.0;
double r539535 = r539529 * r539534;
double r539536 = r539530 * r539535;
double r539537 = r539533 + r539536;
double r539538 = -0.3333333333333333;
double r539539 = log(r539526);
double r539540 = -r539539;
double r539541 = r539540 * r539530;
double r539542 = r539538 * r539541;
double r539543 = r539537 + r539542;
double r539544 = z;
double r539545 = 1.0;
double r539546 = log(r539545);
double r539547 = r539545 * r539526;
double r539548 = r539546 - r539547;
double r539549 = r539544 * r539548;
double r539550 = 0.5;
double r539551 = pow(r539526, r539534);
double r539552 = r539544 * r539551;
double r539553 = pow(r539545, r539534);
double r539554 = r539552 / r539553;
double r539555 = r539550 * r539554;
double r539556 = r539549 - r539555;
double r539557 = r539543 + r539556;
double r539558 = t;
double r539559 = r539557 - r539558;
return r539559;
}




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
Simplified0.3
rmApplied add-cube-cbrt0.3
Applied log-prod0.4
Applied distribute-lft-in0.4
Simplified0.4
Taylor expanded around inf 0.4
Simplified0.3
rmApplied add-cube-cbrt0.3
Applied log-prod0.4
Applied distribute-lft-in0.4
Applied distribute-lft-in0.4
Simplified0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2020045
(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))