\left(x \cdot \log y + z \cdot \log \left(1.0 - y\right)\right) - t
\left(z \cdot \left(\log 1.0 - \left(\frac{\frac{\frac{1}{2}}{\frac{1.0}{y}}}{\frac{1.0}{y}} + 1.0 \cdot y\right)\right) + \left(\left(x \cdot \log \left(\sqrt[3]{y}\right) + \log \left(\sqrt[3]{\sqrt[3]{y}}\right) \cdot x\right) + x \cdot \left(\log \left(\sqrt[3]{\sqrt[3]{y}} \cdot \sqrt[3]{\sqrt[3]{y}}\right) + \log \left(\sqrt[3]{y}\right)\right)\right)\right) - tdouble f(double x, double y, double z, double t) {
double r31422367 = x;
double r31422368 = y;
double r31422369 = log(r31422368);
double r31422370 = r31422367 * r31422369;
double r31422371 = z;
double r31422372 = 1.0;
double r31422373 = r31422372 - r31422368;
double r31422374 = log(r31422373);
double r31422375 = r31422371 * r31422374;
double r31422376 = r31422370 + r31422375;
double r31422377 = t;
double r31422378 = r31422376 - r31422377;
return r31422378;
}
double f(double x, double y, double z, double t) {
double r31422379 = z;
double r31422380 = 1.0;
double r31422381 = log(r31422380);
double r31422382 = 0.5;
double r31422383 = y;
double r31422384 = r31422380 / r31422383;
double r31422385 = r31422382 / r31422384;
double r31422386 = r31422385 / r31422384;
double r31422387 = r31422380 * r31422383;
double r31422388 = r31422386 + r31422387;
double r31422389 = r31422381 - r31422388;
double r31422390 = r31422379 * r31422389;
double r31422391 = x;
double r31422392 = cbrt(r31422383);
double r31422393 = log(r31422392);
double r31422394 = r31422391 * r31422393;
double r31422395 = cbrt(r31422392);
double r31422396 = log(r31422395);
double r31422397 = r31422396 * r31422391;
double r31422398 = r31422394 + r31422397;
double r31422399 = r31422395 * r31422395;
double r31422400 = log(r31422399);
double r31422401 = r31422400 + r31422393;
double r31422402 = r31422391 * r31422401;
double r31422403 = r31422398 + r31422402;
double r31422404 = r31422390 + r31422403;
double r31422405 = t;
double r31422406 = r31422404 - r31422405;
return r31422406;
}




Bits error versus x




Bits error versus y




Bits error versus z




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