\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 r65012 = 1.0;
double r65013 = x;
double r65014 = r65012 - r65013;
double r65015 = log(r65014);
double r65016 = r65012 + r65013;
double r65017 = log(r65016);
double r65018 = r65015 / r65017;
return r65018;
}
double f(double x) {
double r65019 = 1.0;
double r65020 = log(r65019);
double r65021 = x;
double r65022 = r65019 * r65021;
double r65023 = 0.5;
double r65024 = 2.0;
double r65025 = pow(r65021, r65024);
double r65026 = pow(r65019, r65024);
double r65027 = r65025 / r65026;
double r65028 = r65023 * r65027;
double r65029 = r65022 + r65028;
double r65030 = r65020 - r65029;
double r65031 = r65020 - r65028;
double r65032 = fma(r65021, r65019, r65031);
double r65033 = r65030 / r65032;
return r65033;
}




Bits error versus x
| Original | 61.4 |
|---|---|
| Target | 0.3 |
| Herbie | 0.4 |
Initial program 61.4
Taylor expanded around 0 60.6
Simplified60.6
Taylor expanded around 0 0.4
Final simplification0.4
herbie shell --seed 2019356 +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))))