\frac{\log \left(1 - x\right)}{\log \left(1 + x\right)}\frac{\log 1 - \left(1 \cdot x + \frac{1}{2} \cdot \frac{{x}^{2}}{{1}^{2}}\right)}{\left(1 \cdot x + \log 1\right) - \frac{1}{2} \cdot \frac{{x}^{2}}{{1}^{2}}}double f(double x) {
double r105993 = 1.0;
double r105994 = x;
double r105995 = r105993 - r105994;
double r105996 = log(r105995);
double r105997 = r105993 + r105994;
double r105998 = log(r105997);
double r105999 = r105996 / r105998;
return r105999;
}
double f(double x) {
double r106000 = 1.0;
double r106001 = log(r106000);
double r106002 = x;
double r106003 = r106000 * r106002;
double r106004 = 0.5;
double r106005 = 2.0;
double r106006 = pow(r106002, r106005);
double r106007 = pow(r106000, r106005);
double r106008 = r106006 / r106007;
double r106009 = r106004 * r106008;
double r106010 = r106003 + r106009;
double r106011 = r106001 - r106010;
double r106012 = r106003 + r106001;
double r106013 = r106012 - r106009;
double r106014 = r106011 / r106013;
return r106014;
}




Bits error versus x
Results
| Original | 61.5 |
|---|---|
| Target | 0.3 |
| Herbie | 0.4 |
Initial program 61.5
Taylor expanded around 0 60.5
Taylor expanded around 0 0.4
Final simplification0.4
herbie shell --seed 2019208
(FPCore (x)
:name "qlog (example 3.10)"
:precision binary64
:pre (and (< -1 x) (< x 1))
:herbie-target
(- (+ (+ (+ 1 x) (/ (* x x) 2)) (* 0.416666666666666685 (pow x 3))))
(/ (log (- 1 x)) (log (+ 1 x))))