\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(\left(x - 0.5\right) \cdot \log \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) + \left(\log \left({x}^{\frac{1}{3}}\right) \cdot \left(x - 0.5\right) - x\right)\right) + 0.91893853320467001\right) + \left(\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956\right) \cdot \frac{1}{x}double f(double x, double y, double z) {
double r410558 = x;
double r410559 = 0.5;
double r410560 = r410558 - r410559;
double r410561 = log(r410558);
double r410562 = r410560 * r410561;
double r410563 = r410562 - r410558;
double r410564 = 0.91893853320467;
double r410565 = r410563 + r410564;
double r410566 = y;
double r410567 = 0.0007936500793651;
double r410568 = r410566 + r410567;
double r410569 = z;
double r410570 = r410568 * r410569;
double r410571 = 0.0027777777777778;
double r410572 = r410570 - r410571;
double r410573 = r410572 * r410569;
double r410574 = 0.083333333333333;
double r410575 = r410573 + r410574;
double r410576 = r410575 / r410558;
double r410577 = r410565 + r410576;
return r410577;
}
double f(double x, double y, double z) {
double r410578 = x;
double r410579 = 0.5;
double r410580 = r410578 - r410579;
double r410581 = cbrt(r410578);
double r410582 = r410581 * r410581;
double r410583 = log(r410582);
double r410584 = r410580 * r410583;
double r410585 = 0.3333333333333333;
double r410586 = pow(r410578, r410585);
double r410587 = log(r410586);
double r410588 = r410587 * r410580;
double r410589 = r410588 - r410578;
double r410590 = r410584 + r410589;
double r410591 = 0.91893853320467;
double r410592 = r410590 + r410591;
double r410593 = y;
double r410594 = 0.0007936500793651;
double r410595 = r410593 + r410594;
double r410596 = z;
double r410597 = r410595 * r410596;
double r410598 = 0.0027777777777778;
double r410599 = r410597 - r410598;
double r410600 = r410599 * r410596;
double r410601 = 0.083333333333333;
double r410602 = r410600 + r410601;
double r410603 = 1.0;
double r410604 = r410603 / r410578;
double r410605 = r410602 * r410604;
double r410606 = r410592 + r410605;
return r410606;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.1 |
|---|---|
| Target | 1.2 |
| Herbie | 6.2 |
Initial program 6.1
rmApplied add-cube-cbrt6.1
Applied log-prod6.1
Applied distribute-lft-in6.1
Applied associate--l+6.1
Simplified6.1
rmApplied pow1/36.1
rmApplied div-inv6.2
Final simplification6.2
herbie shell --seed 2020024
(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)))