\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 r117272 = 1.0;
double r117273 = x;
double r117274 = r117272 - r117273;
double r117275 = log(r117274);
double r117276 = r117272 + r117273;
double r117277 = log(r117276);
double r117278 = r117275 / r117277;
return r117278;
}
double f(double x) {
double r117279 = 1.0;
double r117280 = log(r117279);
double r117281 = x;
double r117282 = r117279 * r117281;
double r117283 = 0.5;
double r117284 = 2.0;
double r117285 = pow(r117281, r117284);
double r117286 = pow(r117279, r117284);
double r117287 = r117285 / r117286;
double r117288 = r117283 * r117287;
double r117289 = r117282 + r117288;
double r117290 = r117280 - r117289;
double r117291 = r117280 - r117288;
double r117292 = fma(r117281, r117279, r117291);
double r117293 = r117290 / r117292;
return r117293;
}




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