\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.9189385332046700050057097541866824030876\right) + \frac{\left(\left(y + 7.936500793651000149400709382518925849581 \cdot 10^{-4}\right) \cdot z - 0.002777777777777800001512975569539776188321\right) \cdot z + 0.08333333333333299564049667651488562114537}{x}\left(\left(\log \left({x}^{\frac{1}{3}}\right) \cdot \left(3 \cdot x - 1.5\right) - x\right) + 0.9189385332046700050057097541866824030876\right) + \frac{\left(\left(y + 7.936500793651000149400709382518925849581 \cdot 10^{-4}\right) \cdot z - 0.002777777777777800001512975569539776188321\right) \cdot z + 0.08333333333333299564049667651488562114537}{x}double f(double x, double y, double z) {
double r493362 = x;
double r493363 = 0.5;
double r493364 = r493362 - r493363;
double r493365 = log(r493362);
double r493366 = r493364 * r493365;
double r493367 = r493366 - r493362;
double r493368 = 0.91893853320467;
double r493369 = r493367 + r493368;
double r493370 = y;
double r493371 = 0.0007936500793651;
double r493372 = r493370 + r493371;
double r493373 = z;
double r493374 = r493372 * r493373;
double r493375 = 0.0027777777777778;
double r493376 = r493374 - r493375;
double r493377 = r493376 * r493373;
double r493378 = 0.083333333333333;
double r493379 = r493377 + r493378;
double r493380 = r493379 / r493362;
double r493381 = r493369 + r493380;
return r493381;
}
double f(double x, double y, double z) {
double r493382 = x;
double r493383 = 0.3333333333333333;
double r493384 = pow(r493382, r493383);
double r493385 = log(r493384);
double r493386 = 3.0;
double r493387 = r493386 * r493382;
double r493388 = 1.5;
double r493389 = r493387 - r493388;
double r493390 = r493385 * r493389;
double r493391 = r493390 - r493382;
double r493392 = 0.91893853320467;
double r493393 = r493391 + r493392;
double r493394 = y;
double r493395 = 0.0007936500793651;
double r493396 = r493394 + r493395;
double r493397 = z;
double r493398 = r493396 * r493397;
double r493399 = 0.0027777777777778;
double r493400 = r493398 - r493399;
double r493401 = r493400 * r493397;
double r493402 = 0.083333333333333;
double r493403 = r493401 + r493402;
double r493404 = r493403 / r493382;
double r493405 = r493393 + r493404;
return r493405;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.0 |
|---|---|
| Target | 1.2 |
| Herbie | 6.0 |
Initial program 6.0
rmApplied add-cube-cbrt6.0
Applied log-prod6.0
Applied distribute-lft-in6.0
Simplified6.0
Taylor expanded around 0 6.0
Simplified6.0
Final simplification6.0
herbie shell --seed 2020001
(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)))