\frac{\log \left(1 - x\right)}{\log \left(1 + x\right)}\frac{\log 1 - 1 \cdot x}{\log 1 + \left(1 \cdot x + \frac{\frac{x}{\frac{1}{x}} \cdot \frac{-1}{2}}{1}\right)} - \frac{\frac{\frac{x}{\frac{1}{x}}}{1}}{\frac{\log 1 + \left(1 \cdot x + \frac{\frac{x}{\frac{1}{x}} \cdot \frac{-1}{2}}{1}\right)}{\frac{1}{2}}}double f(double x) {
double r110959 = 1.0;
double r110960 = x;
double r110961 = r110959 - r110960;
double r110962 = log(r110961);
double r110963 = r110959 + r110960;
double r110964 = log(r110963);
double r110965 = r110962 / r110964;
return r110965;
}
double f(double x) {
double r110966 = 1.0;
double r110967 = log(r110966);
double r110968 = x;
double r110969 = r110966 * r110968;
double r110970 = r110967 - r110969;
double r110971 = r110966 / r110968;
double r110972 = r110968 / r110971;
double r110973 = -0.5;
double r110974 = r110972 * r110973;
double r110975 = r110974 / r110966;
double r110976 = r110969 + r110975;
double r110977 = r110967 + r110976;
double r110978 = r110970 / r110977;
double r110979 = r110972 / r110966;
double r110980 = 0.5;
double r110981 = r110977 / r110980;
double r110982 = r110979 / r110981;
double r110983 = r110978 - r110982;
return r110983;
}




Bits error versus x
Results
| Original | 61.3 |
|---|---|
| Target | 0.3 |
| Herbie | 0.4 |
Initial program 61.3
Simplified61.3
Taylor expanded around 0 60.5
Simplified60.5
Taylor expanded around 0 0.4
Simplified0.4
rmApplied div-sub0.4
Simplified0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2019179
(FPCore (x)
:name "qlog (example 3.10)"
: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))))