\frac{\log \left(1 - x\right)}{\log \left(1 + x\right)}\frac{1}{\frac{1 \cdot x + \log 1}{\log 1 - \left(1 \cdot x + \frac{1}{2} \cdot \frac{{x}^{2}}{{1}^{2}}\right)} - \frac{\frac{1}{2} \cdot \frac{{x}^{2}}{{1}^{2}}}{\log 1 - \left(1 \cdot x + \frac{1}{2} \cdot \frac{{x}^{2}}{{1}^{2}}\right)}}double f(double x) {
double r90781 = 1.0;
double r90782 = x;
double r90783 = r90781 - r90782;
double r90784 = log(r90783);
double r90785 = r90781 + r90782;
double r90786 = log(r90785);
double r90787 = r90784 / r90786;
return r90787;
}
double f(double x) {
double r90788 = 1.0;
double r90789 = 1.0;
double r90790 = x;
double r90791 = r90789 * r90790;
double r90792 = log(r90789);
double r90793 = r90791 + r90792;
double r90794 = 0.5;
double r90795 = 2.0;
double r90796 = pow(r90790, r90795);
double r90797 = pow(r90789, r90795);
double r90798 = r90796 / r90797;
double r90799 = r90794 * r90798;
double r90800 = r90791 + r90799;
double r90801 = r90792 - r90800;
double r90802 = r90793 / r90801;
double r90803 = r90799 / r90801;
double r90804 = r90802 - r90803;
double r90805 = r90788 / r90804;
return r90805;
}




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