\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 x - \left(x - 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 r356067 = x;
double r356068 = 0.5;
double r356069 = r356067 - r356068;
double r356070 = log(r356067);
double r356071 = r356069 * r356070;
double r356072 = r356071 - r356067;
double r356073 = 0.91893853320467;
double r356074 = r356072 + r356073;
double r356075 = y;
double r356076 = 0.0007936500793651;
double r356077 = r356075 + r356076;
double r356078 = z;
double r356079 = r356077 * r356078;
double r356080 = 0.0027777777777778;
double r356081 = r356079 - r356080;
double r356082 = r356081 * r356078;
double r356083 = 0.083333333333333;
double r356084 = r356082 + r356083;
double r356085 = r356084 / r356067;
double r356086 = r356074 + r356085;
return r356086;
}
double f(double x, double y, double z) {
double r356087 = x;
double r356088 = 0.5;
double r356089 = r356087 - r356088;
double r356090 = log(r356087);
double r356091 = r356089 * r356090;
double r356092 = 0.91893853320467;
double r356093 = r356087 - r356092;
double r356094 = r356091 - r356093;
double r356095 = y;
double r356096 = 0.0007936500793651;
double r356097 = r356095 + r356096;
double r356098 = z;
double r356099 = r356097 * r356098;
double r356100 = 0.0027777777777778;
double r356101 = r356099 - r356100;
double r356102 = r356101 * r356098;
double r356103 = 0.083333333333333;
double r356104 = r356102 + r356103;
double r356105 = r356104 / r356087;
double r356106 = r356094 + r356105;
return r356106;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 5.9 |
|---|---|
| Target | 1.2 |
| Herbie | 5.9 |
Initial program 5.9
rmApplied associate-+l-5.9
Final simplification5.9
herbie shell --seed 2019291
(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.91893853320467001 x)) (/ 0.0833333333333329956 x)) (* (/ z x) (- (* z (+ y 7.93650079365100015e-4)) 0.0027777777777778)))
(+ (+ (- (* (- x 0.5) (log x)) x) 0.91893853320467001) (/ (+ (* (- (* (+ y 7.93650079365100015e-4) z) 0.0027777777777778) z) 0.0833333333333329956) x)))