\frac{\log \left(1 - x\right)}{\log \left(1 + x\right)}\frac{\frac{1}{\mathsf{fma}\left(x, 1, \log 1 - \frac{1}{2} \cdot \frac{{x}^{2}}{{1}^{2}}\right)}}{\frac{1}{\log 1 - \left(1 \cdot x + \frac{1}{2} \cdot \frac{{x}^{2}}{{1}^{2}}\right)}}double f(double x) {
double r108473 = 1.0;
double r108474 = x;
double r108475 = r108473 - r108474;
double r108476 = log(r108475);
double r108477 = r108473 + r108474;
double r108478 = log(r108477);
double r108479 = r108476 / r108478;
return r108479;
}
double f(double x) {
double r108480 = 1.0;
double r108481 = x;
double r108482 = 1.0;
double r108483 = log(r108482);
double r108484 = 0.5;
double r108485 = 2.0;
double r108486 = pow(r108481, r108485);
double r108487 = pow(r108482, r108485);
double r108488 = r108486 / r108487;
double r108489 = r108484 * r108488;
double r108490 = r108483 - r108489;
double r108491 = fma(r108481, r108482, r108490);
double r108492 = r108480 / r108491;
double r108493 = r108482 * r108481;
double r108494 = r108493 + r108489;
double r108495 = r108483 - r108494;
double r108496 = r108480 / r108495;
double r108497 = r108492 / r108496;
return r108497;
}




Bits error versus x
| Original | 61.4 |
|---|---|
| Target | 0.3 |
| Herbie | 0.4 |
Initial program 61.4
Taylor expanded around 0 60.5
Simplified60.5
Taylor expanded around 0 0.4
rmApplied clear-num0.4
rmApplied div-inv0.6
Applied associate-/r*0.4
Final simplification0.4
herbie shell --seed 2020035 +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))))