\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 \left(\sqrt[3]{{x}^{\frac{2}{3}}} \cdot {\left(\sqrt[3]{x}\right)}^{\frac{1}{3}}\right)\right) + \left(\log \left({x}^{\frac{1}{3}}\right) \cdot \left(x - 0.5\right) - x\right)\right) + 0.91893853320467001\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 r288647 = x;
double r288648 = 0.5;
double r288649 = r288647 - r288648;
double r288650 = log(r288647);
double r288651 = r288649 * r288650;
double r288652 = r288651 - r288647;
double r288653 = 0.91893853320467;
double r288654 = r288652 + r288653;
double r288655 = y;
double r288656 = 0.0007936500793651;
double r288657 = r288655 + r288656;
double r288658 = z;
double r288659 = r288657 * r288658;
double r288660 = 0.0027777777777778;
double r288661 = r288659 - r288660;
double r288662 = r288661 * r288658;
double r288663 = 0.083333333333333;
double r288664 = r288662 + r288663;
double r288665 = r288664 / r288647;
double r288666 = r288654 + r288665;
return r288666;
}
double f(double x, double y, double z) {
double r288667 = x;
double r288668 = 0.5;
double r288669 = r288667 - r288668;
double r288670 = cbrt(r288667);
double r288671 = 0.6666666666666666;
double r288672 = pow(r288667, r288671);
double r288673 = cbrt(r288672);
double r288674 = 0.3333333333333333;
double r288675 = pow(r288670, r288674);
double r288676 = r288673 * r288675;
double r288677 = r288670 * r288676;
double r288678 = log(r288677);
double r288679 = r288669 * r288678;
double r288680 = pow(r288667, r288674);
double r288681 = log(r288680);
double r288682 = r288681 * r288669;
double r288683 = r288682 - r288667;
double r288684 = r288679 + r288683;
double r288685 = 0.91893853320467;
double r288686 = r288684 + r288685;
double r288687 = y;
double r288688 = 0.0007936500793651;
double r288689 = r288687 + r288688;
double r288690 = z;
double r288691 = r288689 * r288690;
double r288692 = 0.0027777777777778;
double r288693 = r288691 - r288692;
double r288694 = r288693 * r288690;
double r288695 = 0.083333333333333;
double r288696 = r288694 + r288695;
double r288697 = r288696 / r288667;
double r288698 = r288686 + r288697;
return r288698;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 5.8 |
|---|---|
| Target | 1.0 |
| Herbie | 5.9 |
Initial program 5.8
rmApplied add-cube-cbrt5.8
Applied log-prod5.9
Applied distribute-lft-in5.9
Applied associate--l+5.8
Simplified5.8
rmApplied pow1/35.8
rmApplied add-cube-cbrt5.8
Applied cbrt-prod5.8
Simplified5.8
Simplified5.9
Final simplification5.9
herbie shell --seed 2020046
(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)))