\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 r549399 = x;
double r549400 = 0.5;
double r549401 = r549399 - r549400;
double r549402 = log(r549399);
double r549403 = r549401 * r549402;
double r549404 = r549403 - r549399;
double r549405 = 0.91893853320467;
double r549406 = r549404 + r549405;
double r549407 = y;
double r549408 = 0.0007936500793651;
double r549409 = r549407 + r549408;
double r549410 = z;
double r549411 = r549409 * r549410;
double r549412 = 0.0027777777777778;
double r549413 = r549411 - r549412;
double r549414 = r549413 * r549410;
double r549415 = 0.083333333333333;
double r549416 = r549414 + r549415;
double r549417 = r549416 / r549399;
double r549418 = r549406 + r549417;
return r549418;
}
double f(double x, double y, double z) {
double r549419 = x;
double r549420 = 0.3333333333333333;
double r549421 = pow(r549419, r549420);
double r549422 = log(r549421);
double r549423 = 3.0;
double r549424 = r549423 * r549419;
double r549425 = 1.5;
double r549426 = r549424 - r549425;
double r549427 = r549422 * r549426;
double r549428 = r549427 - r549419;
double r549429 = 0.91893853320467;
double r549430 = r549428 + r549429;
double r549431 = y;
double r549432 = 0.0007936500793651;
double r549433 = r549431 + r549432;
double r549434 = z;
double r549435 = r549433 * r549434;
double r549436 = 0.0027777777777778;
double r549437 = r549435 - r549436;
double r549438 = r549437 * r549434;
double r549439 = 0.083333333333333;
double r549440 = r549438 + r549439;
double r549441 = r549440 / r549419;
double r549442 = r549430 + r549441;
return r549442;
}




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)))