\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 r83023 = 1.0;
double r83024 = x;
double r83025 = r83023 - r83024;
double r83026 = log(r83025);
double r83027 = r83023 + r83024;
double r83028 = log(r83027);
double r83029 = r83026 / r83028;
return r83029;
}
double f(double x) {
double r83030 = 1.0;
double r83031 = log(r83030);
double r83032 = x;
double r83033 = r83030 * r83032;
double r83034 = 0.5;
double r83035 = 2.0;
double r83036 = pow(r83032, r83035);
double r83037 = pow(r83030, r83035);
double r83038 = r83036 / r83037;
double r83039 = r83034 * r83038;
double r83040 = r83033 + r83039;
double r83041 = r83031 - r83040;
double r83042 = r83033 + r83031;
double r83043 = r83042 - r83039;
double r83044 = r83041 / r83043;
return r83044;
}




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 2020047
(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))))