\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 r99678 = 1.0;
double r99679 = x;
double r99680 = r99678 - r99679;
double r99681 = log(r99680);
double r99682 = r99678 + r99679;
double r99683 = log(r99682);
double r99684 = r99681 / r99683;
return r99684;
}
double f(double x) {
double r99685 = 1.0;
double r99686 = log(r99685);
double r99687 = x;
double r99688 = r99685 * r99687;
double r99689 = 0.5;
double r99690 = 2.0;
double r99691 = pow(r99687, r99690);
double r99692 = pow(r99685, r99690);
double r99693 = r99691 / r99692;
double r99694 = r99689 * r99693;
double r99695 = r99688 + r99694;
double r99696 = r99686 - r99695;
double r99697 = r99688 + r99686;
double r99698 = r99697 - r99694;
double r99699 = r99696 / r99698;
return r99699;
}




Bits error versus x
Results
| Original | 61.4 |
|---|---|
| Target | 0.3 |
| Herbie | 0.4 |
Initial program 61.4
Taylor expanded around 0 60.5
Taylor expanded around 0 0.4
Final simplification0.4
herbie shell --seed 2019304
(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))))