\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(x - 0.5\right) \cdot \log \left(e^{\log \left({x}^{\frac{1}{3}}\right)} \cdot \sqrt[3]{x}\right) + \left(\left(\log \left(\sqrt[3]{x}\right) \cdot \left(x - 0.5\right) - x\right) + 0.9189385332046700050057097541866824030876\right)\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 r442762 = x;
double r442763 = 0.5;
double r442764 = r442762 - r442763;
double r442765 = log(r442762);
double r442766 = r442764 * r442765;
double r442767 = r442766 - r442762;
double r442768 = 0.91893853320467;
double r442769 = r442767 + r442768;
double r442770 = y;
double r442771 = 0.0007936500793651;
double r442772 = r442770 + r442771;
double r442773 = z;
double r442774 = r442772 * r442773;
double r442775 = 0.0027777777777778;
double r442776 = r442774 - r442775;
double r442777 = r442776 * r442773;
double r442778 = 0.083333333333333;
double r442779 = r442777 + r442778;
double r442780 = r442779 / r442762;
double r442781 = r442769 + r442780;
return r442781;
}
double f(double x, double y, double z) {
double r442782 = x;
double r442783 = 0.5;
double r442784 = r442782 - r442783;
double r442785 = 0.3333333333333333;
double r442786 = pow(r442782, r442785);
double r442787 = log(r442786);
double r442788 = exp(r442787);
double r442789 = cbrt(r442782);
double r442790 = r442788 * r442789;
double r442791 = log(r442790);
double r442792 = r442784 * r442791;
double r442793 = log(r442789);
double r442794 = r442793 * r442784;
double r442795 = r442794 - r442782;
double r442796 = 0.91893853320467;
double r442797 = r442795 + r442796;
double r442798 = r442792 + r442797;
double r442799 = y;
double r442800 = 0.0007936500793651;
double r442801 = r442799 + r442800;
double r442802 = z;
double r442803 = r442801 * r442802;
double r442804 = 0.0027777777777778;
double r442805 = r442803 - r442804;
double r442806 = r442805 * r442802;
double r442807 = 0.083333333333333;
double r442808 = r442806 + r442807;
double r442809 = r442808 / r442782;
double r442810 = r442798 + r442809;
return r442810;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 5.9 |
|---|---|
| Target | 1.0 |
| Herbie | 5.9 |
Initial program 5.9
rmApplied add-cube-cbrt5.9
Applied log-prod6.0
Applied distribute-lft-in6.0
Applied associate--l+6.0
Applied associate-+l+6.0
Simplified6.0
rmApplied pow1/35.9
rmApplied add-exp-log5.9
Applied pow-exp6.0
Simplified5.9
Final simplification5.9
herbie shell --seed 2020002
(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)))