\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) + \left(x \cdot \log \left(\sqrt[3]{\sqrt[3]{y} \cdot \sqrt[3]{y}}\right) + x \cdot \log \left(\sqrt[3]{\sqrt[3]{y}}\right)\right)\right) + z \cdot \left(\log 1 - \left(1 \cdot y + \frac{1}{2} \cdot \frac{{y}^{2}}{{1}^{2}}\right)\right)\right) - tdouble f(double x, double y, double z, double t) {
double r519255 = x;
double r519256 = y;
double r519257 = log(r519256);
double r519258 = r519255 * r519257;
double r519259 = z;
double r519260 = 1.0;
double r519261 = r519260 - r519256;
double r519262 = log(r519261);
double r519263 = r519259 * r519262;
double r519264 = r519258 + r519263;
double r519265 = t;
double r519266 = r519264 - r519265;
return r519266;
}
double f(double x, double y, double z, double t) {
double r519267 = x;
double r519268 = 2.0;
double r519269 = y;
double r519270 = cbrt(r519269);
double r519271 = log(r519270);
double r519272 = r519268 * r519271;
double r519273 = r519267 * r519272;
double r519274 = r519270 * r519270;
double r519275 = cbrt(r519274);
double r519276 = log(r519275);
double r519277 = r519267 * r519276;
double r519278 = cbrt(r519270);
double r519279 = log(r519278);
double r519280 = r519267 * r519279;
double r519281 = r519277 + r519280;
double r519282 = r519273 + r519281;
double r519283 = z;
double r519284 = 1.0;
double r519285 = log(r519284);
double r519286 = r519284 * r519269;
double r519287 = 0.5;
double r519288 = pow(r519269, r519268);
double r519289 = pow(r519284, r519268);
double r519290 = r519288 / r519289;
double r519291 = r519287 * r519290;
double r519292 = r519286 + r519291;
double r519293 = r519285 - r519292;
double r519294 = r519283 * r519293;
double r519295 = r519282 + r519294;
double r519296 = t;
double r519297 = r519295 - r519296;
return r519297;
}




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