\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467001\right) + \frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x}\left(\left(x - 0.5\right) \cdot \log \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) + \left(\left(\left(x - 0.5\right) \cdot \log \left(\sqrt[3]{x}\right) - x\right) + 0.91893853320467001\right)\right) + \frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x}double f(double x, double y, double z) {
double r387355 = x;
double r387356 = 0.5;
double r387357 = r387355 - r387356;
double r387358 = log(r387355);
double r387359 = r387357 * r387358;
double r387360 = r387359 - r387355;
double r387361 = 0.91893853320467;
double r387362 = r387360 + r387361;
double r387363 = y;
double r387364 = 0.0007936500793651;
double r387365 = r387363 + r387364;
double r387366 = z;
double r387367 = r387365 * r387366;
double r387368 = 0.0027777777777778;
double r387369 = r387367 - r387368;
double r387370 = r387369 * r387366;
double r387371 = 0.083333333333333;
double r387372 = r387370 + r387371;
double r387373 = r387372 / r387355;
double r387374 = r387362 + r387373;
return r387374;
}
double f(double x, double y, double z) {
double r387375 = x;
double r387376 = 0.5;
double r387377 = r387375 - r387376;
double r387378 = cbrt(r387375);
double r387379 = r387378 * r387378;
double r387380 = log(r387379);
double r387381 = r387377 * r387380;
double r387382 = log(r387378);
double r387383 = r387377 * r387382;
double r387384 = r387383 - r387375;
double r387385 = 0.91893853320467;
double r387386 = r387384 + r387385;
double r387387 = r387381 + r387386;
double r387388 = y;
double r387389 = 0.0007936500793651;
double r387390 = r387388 + r387389;
double r387391 = z;
double r387392 = r387390 * r387391;
double r387393 = 0.0027777777777778;
double r387394 = r387392 - r387393;
double r387395 = r387394 * r387391;
double r387396 = 0.083333333333333;
double r387397 = r387395 + r387396;
double r387398 = r387397 / r387375;
double r387399 = r387387 + r387398;
return r387399;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 5.8 |
|---|---|
| Target | 1.0 |
| Herbie | 5.8 |
Initial program 5.8
rmApplied add-cube-cbrt5.8
Applied log-prod5.9
Applied distribute-lft-in5.9
Applied associate--l+5.8
Applied associate-+l+5.8
Final simplification5.8
herbie shell --seed 2020046 +o rules:numerics
(FPCore (x y z)
:name "Numeric.SpecFunctions:$slogFactorial from math-functions-0.1.5.2, B"
:precision binary64
:herbie-target
(+ (+ (+ (* (- x 0.5) (log x)) (- 0.91893853320467 x)) (/ 0.083333333333333 x)) (* (/ z x) (- (* z (+ y 0.0007936500793651)) 0.0027777777777778)))
(+ (+ (- (* (- x 0.5) (log x)) x) 0.91893853320467) (/ (+ (* (- (* (+ y 0.0007936500793651) z) 0.0027777777777778) z) 0.083333333333333) x)))