\left(x \cdot \log y + z \cdot \log \left(1 - y\right)\right) - t
\left(x \cdot \log \left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) + \left(\log \left(\sqrt[3]{y}\right) \cdot x + z \cdot \left(\log 1 - \left(1 \cdot y + \frac{1}{2} \cdot \frac{{y}^{2}}{{1}^{2}}\right)\right)\right)\right) - tdouble f(double x, double y, double z, double t) {
double r376481 = x;
double r376482 = y;
double r376483 = log(r376482);
double r376484 = r376481 * r376483;
double r376485 = z;
double r376486 = 1.0;
double r376487 = r376486 - r376482;
double r376488 = log(r376487);
double r376489 = r376485 * r376488;
double r376490 = r376484 + r376489;
double r376491 = t;
double r376492 = r376490 - r376491;
return r376492;
}
double f(double x, double y, double z, double t) {
double r376493 = x;
double r376494 = y;
double r376495 = cbrt(r376494);
double r376496 = r376495 * r376495;
double r376497 = log(r376496);
double r376498 = r376493 * r376497;
double r376499 = log(r376495);
double r376500 = r376499 * r376493;
double r376501 = z;
double r376502 = 1.0;
double r376503 = log(r376502);
double r376504 = r376502 * r376494;
double r376505 = 0.5;
double r376506 = 2.0;
double r376507 = pow(r376494, r376506);
double r376508 = pow(r376502, r376506);
double r376509 = r376507 / r376508;
double r376510 = r376505 * r376509;
double r376511 = r376504 + r376510;
double r376512 = r376503 - r376511;
double r376513 = r376501 * r376512;
double r376514 = r376500 + r376513;
double r376515 = r376498 + r376514;
double r376516 = t;
double r376517 = r376515 - r376516;
return r376517;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 9.4 |
|---|---|
| Target | 0.2 |
| Herbie | 0.3 |
Initial program 9.4
Taylor expanded around 0 0.3
rmApplied add-cube-cbrt0.3
Applied log-prod0.3
Applied distribute-lft-in0.3
Applied associate-+l+0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2019306
(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.333333333333333315 (* 1 (* 1 1))) (* y (* y y))))) (- t (* x (log y))))
(- (+ (* x (log y)) (* z (log (- 1 y)))) t))