\left(x \cdot \log y + z \cdot \log \left(1 - y\right)\right) - t
\left(\left(x \cdot \left(2 \cdot \log \left(\sqrt[3]{y}\right)\right) + x \cdot \log \left({y}^{\frac{1}{3}}\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 r540339 = x;
double r540340 = y;
double r540341 = log(r540340);
double r540342 = r540339 * r540341;
double r540343 = z;
double r540344 = 1.0;
double r540345 = r540344 - r540340;
double r540346 = log(r540345);
double r540347 = r540343 * r540346;
double r540348 = r540342 + r540347;
double r540349 = t;
double r540350 = r540348 - r540349;
return r540350;
}
double f(double x, double y, double z, double t) {
double r540351 = x;
double r540352 = 2.0;
double r540353 = y;
double r540354 = cbrt(r540353);
double r540355 = log(r540354);
double r540356 = r540352 * r540355;
double r540357 = r540351 * r540356;
double r540358 = 0.3333333333333333;
double r540359 = pow(r540353, r540358);
double r540360 = log(r540359);
double r540361 = r540351 * r540360;
double r540362 = r540357 + r540361;
double r540363 = z;
double r540364 = 1.0;
double r540365 = log(r540364);
double r540366 = r540363 * r540365;
double r540367 = r540363 * r540353;
double r540368 = r540364 * r540367;
double r540369 = 0.5;
double r540370 = pow(r540353, r540352);
double r540371 = r540363 * r540370;
double r540372 = pow(r540364, r540352);
double r540373 = r540371 / r540372;
double r540374 = r540369 * r540373;
double r540375 = r540368 + r540374;
double r540376 = r540366 - r540375;
double r540377 = r540362 + r540376;
double r540378 = t;
double r540379 = r540377 - r540378;
return r540379;
}




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.4
rmApplied add-cube-cbrt0.4
Applied log-prod0.4
Applied distribute-lft-in0.4
Simplified0.4
rmApplied pow1/30.4
Final simplification0.4
herbie shell --seed 2020060
(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))