\frac{\log \left(1 - x\right)}{\log \left(1 + x\right)}\frac{1}{\frac{x + \left(x \cdot x\right) \cdot \left(x \cdot \left(0.3333333333333333 - x \cdot 0.25\right) + -0.5\right)}{\left(\left(x \cdot x\right) \cdot -0.5 - x\right) - {x}^{3} \cdot \left(0.3333333333333333 + x \cdot 0.25\right)}}(FPCore (x) :precision binary64 (/ (log (- 1.0 x)) (log (+ 1.0 x))))
(FPCore (x)
:precision binary64
(/
1.0
(/
(+ x (* (* x x) (+ (* x (- 0.3333333333333333 (* x 0.25))) -0.5)))
(-
(- (* (* x x) -0.5) x)
(* (pow x 3.0) (+ 0.3333333333333333 (* x 0.25)))))))double code(double x) {
return log(1.0 - x) / log(1.0 + x);
}
double code(double x) {
return 1.0 / ((x + ((x * x) * ((x * (0.3333333333333333 - (x * 0.25))) + -0.5))) / ((((x * x) * -0.5) - x) - (pow(x, 3.0) * (0.3333333333333333 + (x * 0.25)))));
}




Bits error versus x
Results
| Original | 61.5 |
|---|---|
| Target | 0.3 |
| Herbie | 0.3 |
Initial program 61.5
Taylor expanded around 0 60.3
Simplified60.3
Taylor expanded around 0 0.3
Simplified0.3
rmApplied clear-num_binary64_4180.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2021075
(FPCore (x)
:name "qlog (example 3.10)"
:precision binary64
: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))))