\frac{\log \left(1 - x\right)}{\log \left(1 + x\right)}\frac{\log 1 - \left(1 \cdot x + \left(\frac{x}{1} \cdot \frac{x}{1}\right) \cdot \frac{1}{2}\right)}{\left(1 \cdot x - \left(\frac{x}{1} \cdot \frac{x}{1}\right) \cdot \frac{1}{2}\right) + \log 1}double f(double x) {
double r4180272 = 1.0;
double r4180273 = x;
double r4180274 = r4180272 - r4180273;
double r4180275 = log(r4180274);
double r4180276 = r4180272 + r4180273;
double r4180277 = log(r4180276);
double r4180278 = r4180275 / r4180277;
return r4180278;
}
double f(double x) {
double r4180279 = 1.0;
double r4180280 = log(r4180279);
double r4180281 = x;
double r4180282 = r4180279 * r4180281;
double r4180283 = r4180281 / r4180279;
double r4180284 = r4180283 * r4180283;
double r4180285 = 0.5;
double r4180286 = r4180284 * r4180285;
double r4180287 = r4180282 + r4180286;
double r4180288 = r4180280 - r4180287;
double r4180289 = r4180282 - r4180286;
double r4180290 = r4180289 + r4180280;
double r4180291 = r4180288 / r4180290;
return r4180291;
}




Bits error versus x
Results
| Original | 61.3 |
|---|---|
| Target | 0.4 |
| Herbie | 0.5 |
Initial program 61.3
Taylor expanded around 0 60.5
Simplified60.5
Taylor expanded around 0 0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2019172
(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))))