\frac{\log \left(1 - x\right)}{\log \left(1 + x\right)}\frac{\log 1 - \left(1 \cdot x + \left(\frac{1}{2} \cdot \frac{x}{1}\right) \cdot \frac{x}{1}\right)}{\left(1 \cdot x + \log 1\right) + \left(\frac{x}{1} \cdot \frac{-1}{2}\right) \cdot \frac{x}{1}}double f(double x) {
double r4816485 = 1.0;
double r4816486 = x;
double r4816487 = r4816485 - r4816486;
double r4816488 = log(r4816487);
double r4816489 = r4816485 + r4816486;
double r4816490 = log(r4816489);
double r4816491 = r4816488 / r4816490;
return r4816491;
}
double f(double x) {
double r4816492 = 1.0;
double r4816493 = log(r4816492);
double r4816494 = x;
double r4816495 = r4816492 * r4816494;
double r4816496 = 0.5;
double r4816497 = r4816494 / r4816492;
double r4816498 = r4816496 * r4816497;
double r4816499 = r4816498 * r4816497;
double r4816500 = r4816495 + r4816499;
double r4816501 = r4816493 - r4816500;
double r4816502 = r4816495 + r4816493;
double r4816503 = -0.5;
double r4816504 = r4816497 * r4816503;
double r4816505 = r4816504 * r4816497;
double r4816506 = r4816502 + r4816505;
double r4816507 = r4816501 / r4816506;
return r4816507;
}




Bits error versus x
Results
| 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
Simplified0.4
rmApplied associate-*r*0.4
Final simplification0.4
herbie shell --seed 2019200
(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))))