\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(x - 0.5\right) \cdot \log \left(e^{\log x \cdot \frac{1}{3}} \cdot \sqrt[3]{x}\right) + \left(\left(\log \left(\sqrt[3]{x}\right) \cdot \left(x - 0.5\right) - x\right) + 0.91893853320467001\right)\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 r494883 = x;
double r494884 = 0.5;
double r494885 = r494883 - r494884;
double r494886 = log(r494883);
double r494887 = r494885 * r494886;
double r494888 = r494887 - r494883;
double r494889 = 0.91893853320467;
double r494890 = r494888 + r494889;
double r494891 = y;
double r494892 = 0.0007936500793651;
double r494893 = r494891 + r494892;
double r494894 = z;
double r494895 = r494893 * r494894;
double r494896 = 0.0027777777777778;
double r494897 = r494895 - r494896;
double r494898 = r494897 * r494894;
double r494899 = 0.083333333333333;
double r494900 = r494898 + r494899;
double r494901 = r494900 / r494883;
double r494902 = r494890 + r494901;
return r494902;
}
double f(double x, double y, double z) {
double r494903 = x;
double r494904 = 0.5;
double r494905 = r494903 - r494904;
double r494906 = log(r494903);
double r494907 = 0.3333333333333333;
double r494908 = r494906 * r494907;
double r494909 = exp(r494908);
double r494910 = cbrt(r494903);
double r494911 = r494909 * r494910;
double r494912 = log(r494911);
double r494913 = r494905 * r494912;
double r494914 = log(r494910);
double r494915 = r494914 * r494905;
double r494916 = r494915 - r494903;
double r494917 = 0.91893853320467;
double r494918 = r494916 + r494917;
double r494919 = r494913 + r494918;
double r494920 = y;
double r494921 = 0.0007936500793651;
double r494922 = r494920 + r494921;
double r494923 = z;
double r494924 = r494922 * r494923;
double r494925 = 0.0027777777777778;
double r494926 = r494924 - r494925;
double r494927 = r494926 * r494923;
double r494928 = 0.083333333333333;
double r494929 = r494927 + r494928;
double r494930 = r494929 / r494903;
double r494931 = r494919 + r494930;
return r494931;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.2 |
|---|---|
| Target | 1.3 |
| Herbie | 6.2 |
Initial program 6.2
rmApplied add-cube-cbrt6.2
Applied log-prod6.2
Applied distribute-lft-in6.2
Applied associate--l+6.2
Applied associate-+l+6.2
Simplified6.2
Taylor expanded around inf 6.2
rmApplied add-exp-log6.2
Applied rec-exp6.2
Applied pow-exp6.2
Simplified6.2
Final simplification6.2
herbie shell --seed 2020060
(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)))