\left(x \cdot \log y + z \cdot \log \left(1 - y\right)\right) - t
\left(\left(\left(2 \cdot \log \left(\sqrt[3]{y}\right)\right) \cdot x + \log \left({\left(\frac{1}{y}\right)}^{\frac{-1}{3}}\right) \cdot x\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 r269584 = x;
double r269585 = y;
double r269586 = log(r269585);
double r269587 = r269584 * r269586;
double r269588 = z;
double r269589 = 1.0;
double r269590 = r269589 - r269585;
double r269591 = log(r269590);
double r269592 = r269588 * r269591;
double r269593 = r269587 + r269592;
double r269594 = t;
double r269595 = r269593 - r269594;
return r269595;
}
double f(double x, double y, double z, double t) {
double r269596 = 2.0;
double r269597 = y;
double r269598 = cbrt(r269597);
double r269599 = log(r269598);
double r269600 = r269596 * r269599;
double r269601 = x;
double r269602 = r269600 * r269601;
double r269603 = 1.0;
double r269604 = r269603 / r269597;
double r269605 = -0.3333333333333333;
double r269606 = pow(r269604, r269605);
double r269607 = log(r269606);
double r269608 = r269607 * r269601;
double r269609 = r269602 + r269608;
double r269610 = z;
double r269611 = 1.0;
double r269612 = log(r269611);
double r269613 = r269611 * r269597;
double r269614 = 0.5;
double r269615 = pow(r269597, r269596);
double r269616 = pow(r269611, r269596);
double r269617 = r269615 / r269616;
double r269618 = r269614 * r269617;
double r269619 = r269613 + r269618;
double r269620 = r269612 - r269619;
double r269621 = r269610 * r269620;
double r269622 = r269609 + r269621;
double r269623 = t;
double r269624 = r269622 - r269623;
return r269624;
}




Bits error versus x




Bits error versus y




Bits error versus z




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