\left(x \cdot \log y + z \cdot \log \left(1 - y\right)\right) - t
\left(\left(x \cdot \left(\log \left(\sqrt[3]{\sqrt[3]{y} \cdot \sqrt[3]{y}}\right) \cdot 2\right) + x \cdot \left(\log \left(\sqrt[3]{\sqrt[3]{y}}\right) \cdot 2 + \log \left(\sqrt[3]{y}\right)\right)\right) + \left(z \cdot \log 1 - \left(1 \cdot \left(z \cdot y\right) + \frac{1}{2} \cdot \frac{z \cdot {y}^{2}}{{1}^{2}}\right)\right)\right) - tdouble f(double x, double y, double z, double t) {
double r414431 = x;
double r414432 = y;
double r414433 = log(r414432);
double r414434 = r414431 * r414433;
double r414435 = z;
double r414436 = 1.0;
double r414437 = r414436 - r414432;
double r414438 = log(r414437);
double r414439 = r414435 * r414438;
double r414440 = r414434 + r414439;
double r414441 = t;
double r414442 = r414440 - r414441;
return r414442;
}
double f(double x, double y, double z, double t) {
double r414443 = x;
double r414444 = y;
double r414445 = cbrt(r414444);
double r414446 = r414445 * r414445;
double r414447 = cbrt(r414446);
double r414448 = log(r414447);
double r414449 = 2.0;
double r414450 = r414448 * r414449;
double r414451 = r414443 * r414450;
double r414452 = cbrt(r414445);
double r414453 = log(r414452);
double r414454 = r414453 * r414449;
double r414455 = log(r414445);
double r414456 = r414454 + r414455;
double r414457 = r414443 * r414456;
double r414458 = r414451 + r414457;
double r414459 = z;
double r414460 = 1.0;
double r414461 = log(r414460);
double r414462 = r414459 * r414461;
double r414463 = r414459 * r414444;
double r414464 = r414460 * r414463;
double r414465 = 0.5;
double r414466 = pow(r414444, r414449);
double r414467 = r414459 * r414466;
double r414468 = pow(r414460, r414449);
double r414469 = r414467 / r414468;
double r414470 = r414465 * r414469;
double r414471 = r414464 + r414470;
double r414472 = r414462 - r414471;
double r414473 = r414458 + r414472;
double r414474 = t;
double r414475 = r414473 - r414474;
return r414475;
}




Bits error versus x




Bits error versus y




Bits error versus z




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