\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)}{\mathsf{fma}\left(x, 1, \log 1 - \frac{1}{2} \cdot \frac{{x}^{2}}{{1}^{2}}\right)}double f(double x) {
double r132517 = 1.0;
double r132518 = x;
double r132519 = r132517 - r132518;
double r132520 = log(r132519);
double r132521 = r132517 + r132518;
double r132522 = log(r132521);
double r132523 = r132520 / r132522;
return r132523;
}
double f(double x) {
double r132524 = 1.0;
double r132525 = log(r132524);
double r132526 = x;
double r132527 = r132524 * r132526;
double r132528 = 0.5;
double r132529 = 2.0;
double r132530 = pow(r132526, r132529);
double r132531 = pow(r132524, r132529);
double r132532 = r132530 / r132531;
double r132533 = r132528 * r132532;
double r132534 = r132527 + r132533;
double r132535 = r132525 - r132534;
double r132536 = r132525 - r132533;
double r132537 = fma(r132526, r132524, r132536);
double r132538 = r132535 / r132537;
return r132538;
}




Bits error versus x
| Original | 61.3 |
|---|---|
| Target | 0.4 |
| Herbie | 0.5 |
Initial program 61.3
Taylor expanded around 0 60.4
Simplified60.4
Taylor expanded around 0 0.5
Final simplification0.5
herbie shell --seed 2020020 +o rules:numerics
(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))))