\frac{\log \left(1 - x\right)}{\log \left(1 + x\right)}\frac{1}{\frac{\left(\frac{x}{1} \cdot \frac{x}{1}\right) \cdot \frac{-1}{2} + \left(1 \cdot x + \log 1\right)}{\log 1 - \left(1 \cdot x + \frac{1}{2} \cdot \left(\frac{x}{1} \cdot \frac{x}{1}\right)\right)}}double f(double x) {
double r3845516 = 1.0;
double r3845517 = x;
double r3845518 = r3845516 - r3845517;
double r3845519 = log(r3845518);
double r3845520 = r3845516 + r3845517;
double r3845521 = log(r3845520);
double r3845522 = r3845519 / r3845521;
return r3845522;
}
double f(double x) {
double r3845523 = 1.0;
double r3845524 = x;
double r3845525 = 1.0;
double r3845526 = r3845524 / r3845525;
double r3845527 = r3845526 * r3845526;
double r3845528 = -0.5;
double r3845529 = r3845527 * r3845528;
double r3845530 = r3845525 * r3845524;
double r3845531 = log(r3845525);
double r3845532 = r3845530 + r3845531;
double r3845533 = r3845529 + r3845532;
double r3845534 = 0.5;
double r3845535 = r3845534 * r3845527;
double r3845536 = r3845530 + r3845535;
double r3845537 = r3845531 - r3845536;
double r3845538 = r3845533 / r3845537;
double r3845539 = r3845523 / r3845538;
return r3845539;
}




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 clear-num0.4
Final simplification0.4
herbie shell --seed 2019174
(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))))