\frac{\log \left(1 - x\right)}{\log \left(1 + x\right)}\frac{1}{\frac{\left(x \cdot 1 + \log 1\right) - \frac{\frac{1}{2} \cdot x}{1} \cdot \frac{x}{1}}{\left(\log 1 - x \cdot 1\right) - \frac{\frac{1}{2} \cdot x}{1} \cdot \frac{x}{1}}}double f(double x) {
double r78918 = 1.0;
double r78919 = x;
double r78920 = r78918 - r78919;
double r78921 = log(r78920);
double r78922 = r78918 + r78919;
double r78923 = log(r78922);
double r78924 = r78921 / r78923;
return r78924;
}
double f(double x) {
double r78925 = 1.0;
double r78926 = x;
double r78927 = 1.0;
double r78928 = r78926 * r78927;
double r78929 = log(r78927);
double r78930 = r78928 + r78929;
double r78931 = 0.5;
double r78932 = r78931 * r78926;
double r78933 = r78932 / r78927;
double r78934 = r78926 / r78927;
double r78935 = r78933 * r78934;
double r78936 = r78930 - r78935;
double r78937 = r78929 - r78928;
double r78938 = r78937 - r78935;
double r78939 = r78936 / r78938;
double r78940 = r78925 / r78939;
return r78940;
}




Bits error versus x
Results
| Original | 61.4 |
|---|---|
| Target | 0.3 |
| Herbie | 0.4 |
Initial program 61.4
Taylor expanded around 0 60.5
Simplified60.5
Taylor expanded around 0 0.4
Simplified0.4
rmApplied clear-num0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2019196
(FPCore (x)
:name "qlog (example 3.10)"
:pre (and (< -1.0 x) (< x 1.0))
:herbie-target
(- (+ (+ (+ 1.0 x) (/ (* x x) 2.0)) (* 0.4166666666666667 (pow x 3.0))))
(/ (log (- 1.0 x)) (log (+ 1.0 x))))