\left(x \cdot \log y + z \cdot \log \left(1 - y\right)\right) - t
\left(\left(\left(4 \cdot \left(x \cdot \log \left(\sqrt[3]{\sqrt[3]{y}}\right)\right) + \left(\log \left(\sqrt[3]{\sqrt[3]{y}}\right) \cdot x\right) \cdot 2\right) + \log \left(\sqrt[3]{y}\right) \cdot x\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 r313421 = x;
double r313422 = y;
double r313423 = log(r313422);
double r313424 = r313421 * r313423;
double r313425 = z;
double r313426 = 1.0;
double r313427 = r313426 - r313422;
double r313428 = log(r313427);
double r313429 = r313425 * r313428;
double r313430 = r313424 + r313429;
double r313431 = t;
double r313432 = r313430 - r313431;
return r313432;
}
double f(double x, double y, double z, double t) {
double r313433 = 4.0;
double r313434 = x;
double r313435 = y;
double r313436 = cbrt(r313435);
double r313437 = cbrt(r313436);
double r313438 = log(r313437);
double r313439 = r313434 * r313438;
double r313440 = r313433 * r313439;
double r313441 = r313438 * r313434;
double r313442 = 2.0;
double r313443 = r313441 * r313442;
double r313444 = r313440 + r313443;
double r313445 = log(r313436);
double r313446 = r313445 * r313434;
double r313447 = r313444 + r313446;
double r313448 = z;
double r313449 = 1.0;
double r313450 = log(r313449);
double r313451 = r313449 * r313435;
double r313452 = r313450 - r313451;
double r313453 = r313448 * r313452;
double r313454 = 0.5;
double r313455 = pow(r313435, r313442);
double r313456 = r313448 * r313455;
double r313457 = pow(r313449, r313442);
double r313458 = r313456 / r313457;
double r313459 = r313454 * r313458;
double r313460 = r313453 - r313459;
double r313461 = r313447 + r313460;
double r313462 = t;
double r313463 = r313461 - r313462;
return r313463;
}




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
Simplified0.3
rmApplied add-cube-cbrt0.3
Applied log-prod0.4
Applied distribute-lft-in0.4
Simplified0.4
Simplified0.4
rmApplied add-cube-cbrt0.4
Applied log-prod0.4
Applied distribute-lft-in0.4
Applied distribute-lft-in0.4
Simplified0.4
Simplified0.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))