\frac{\log \left(1 - x\right)}{\log \left(1 + x\right)}\frac{\log 1 - \left(x \cdot 1 + \frac{x}{1} \cdot \left(\frac{x}{1} \cdot \frac{1}{2}\right)\right)}{\frac{-1}{2} \cdot \left(\frac{x}{1} \cdot \frac{x}{1}\right) + \left(x \cdot 1 + \log 1\right)}double f(double x) {
double r4207989 = 1.0;
double r4207990 = x;
double r4207991 = r4207989 - r4207990;
double r4207992 = log(r4207991);
double r4207993 = r4207989 + r4207990;
double r4207994 = log(r4207993);
double r4207995 = r4207992 / r4207994;
return r4207995;
}
double f(double x) {
double r4207996 = 1.0;
double r4207997 = log(r4207996);
double r4207998 = x;
double r4207999 = r4207998 * r4207996;
double r4208000 = r4207998 / r4207996;
double r4208001 = 0.5;
double r4208002 = r4208000 * r4208001;
double r4208003 = r4208000 * r4208002;
double r4208004 = r4207999 + r4208003;
double r4208005 = r4207997 - r4208004;
double r4208006 = -0.5;
double r4208007 = r4208000 * r4208000;
double r4208008 = r4208006 * r4208007;
double r4208009 = r4207999 + r4207997;
double r4208010 = r4208008 + r4208009;
double r4208011 = r4208005 / r4208010;
return r4208011;
}




Bits error versus x
Results
| Original | 61.6 |
|---|---|
| Target | 0.3 |
| Herbie | 0.4 |
Initial program 61.6
Taylor expanded around 0 60.5
Simplified60.5
Taylor expanded around 0 0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2019169
(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))))