\left(x \cdot \log y + z \cdot \log \left(1 - y\right)\right) - t
\left(z \cdot \left(\frac{-1}{2} \cdot \left(\frac{y}{1} \cdot \frac{y}{1}\right) + \left(\log 1 - y \cdot 1\right)\right) + \left(\left(\log \left(\sqrt[3]{y}\right) \cdot x + \log \left(\sqrt[3]{y}\right) \cdot x\right) + x \cdot \log \left({y}^{\frac{1}{3}}\right)\right)\right) - tdouble f(double x, double y, double z, double t) {
double r26438437 = x;
double r26438438 = y;
double r26438439 = log(r26438438);
double r26438440 = r26438437 * r26438439;
double r26438441 = z;
double r26438442 = 1.0;
double r26438443 = r26438442 - r26438438;
double r26438444 = log(r26438443);
double r26438445 = r26438441 * r26438444;
double r26438446 = r26438440 + r26438445;
double r26438447 = t;
double r26438448 = r26438446 - r26438447;
return r26438448;
}
double f(double x, double y, double z, double t) {
double r26438449 = z;
double r26438450 = -0.5;
double r26438451 = y;
double r26438452 = 1.0;
double r26438453 = r26438451 / r26438452;
double r26438454 = r26438453 * r26438453;
double r26438455 = r26438450 * r26438454;
double r26438456 = log(r26438452);
double r26438457 = r26438451 * r26438452;
double r26438458 = r26438456 - r26438457;
double r26438459 = r26438455 + r26438458;
double r26438460 = r26438449 * r26438459;
double r26438461 = cbrt(r26438451);
double r26438462 = log(r26438461);
double r26438463 = x;
double r26438464 = r26438462 * r26438463;
double r26438465 = r26438464 + r26438464;
double r26438466 = 0.3333333333333333;
double r26438467 = pow(r26438451, r26438466);
double r26438468 = log(r26438467);
double r26438469 = r26438463 * r26438468;
double r26438470 = r26438465 + r26438469;
double r26438471 = r26438460 + r26438470;
double r26438472 = t;
double r26438473 = r26438471 - r26438472;
return r26438473;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 9.4 |
|---|---|
| Target | 0.3 |
| Herbie | 0.4 |
Initial program 9.4
Taylor expanded around 0 0.3
Simplified0.3
rmApplied add-cube-cbrt0.3
Applied log-prod0.4
Applied distribute-lft-in0.4
Simplified0.4
rmApplied pow1/30.4
Final simplification0.4
herbie shell --seed 2019171
(FPCore (x y z t)
:name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, B"
:herbie-target
(- (* (- z) (+ (+ (* 0.5 (* y y)) y) (* (/ 0.3333333333333333 (* 1.0 (* 1.0 1.0))) (* y (* y y))))) (- t (* x (log y))))
(- (+ (* x (log y)) (* z (log (- 1.0 y)))) t))