\frac{\log \left(1.0 - x\right)}{\log \left(1.0 + x\right)}\frac{\sqrt[3]{\log 1.0 - \left(1.0 \cdot x + \frac{x}{1.0} \cdot \left(\frac{1}{2} \cdot \frac{x}{1.0}\right)\right)} \cdot \sqrt[3]{\log 1.0 - \left(1.0 \cdot x + \frac{x}{1.0} \cdot \left(\frac{1}{2} \cdot \frac{x}{1.0}\right)\right)}}{\sqrt[3]{\left(\log 1.0 - \frac{1}{2} \cdot \left(\frac{x}{1.0} \cdot \frac{x}{1.0}\right)\right) + 1.0 \cdot x} \cdot \sqrt[3]{\left(\log 1.0 - \frac{1}{2} \cdot \left(\frac{x}{1.0} \cdot \frac{x}{1.0}\right)\right) + 1.0 \cdot x}} \cdot \frac{\sqrt[3]{\log 1.0 - \left(1.0 \cdot x + \frac{x}{1.0} \cdot \left(\frac{1}{2} \cdot \frac{x}{1.0}\right)\right)}}{\sqrt[3]{\left(\log 1.0 - \frac{1}{2} \cdot \left(\frac{x}{1.0} \cdot \frac{x}{1.0}\right)\right) + 1.0 \cdot x}}double f(double x) {
double r4380557 = 1.0;
double r4380558 = x;
double r4380559 = r4380557 - r4380558;
double r4380560 = log(r4380559);
double r4380561 = r4380557 + r4380558;
double r4380562 = log(r4380561);
double r4380563 = r4380560 / r4380562;
return r4380563;
}
double f(double x) {
double r4380564 = 1.0;
double r4380565 = log(r4380564);
double r4380566 = x;
double r4380567 = r4380564 * r4380566;
double r4380568 = r4380566 / r4380564;
double r4380569 = 0.5;
double r4380570 = r4380569 * r4380568;
double r4380571 = r4380568 * r4380570;
double r4380572 = r4380567 + r4380571;
double r4380573 = r4380565 - r4380572;
double r4380574 = cbrt(r4380573);
double r4380575 = r4380574 * r4380574;
double r4380576 = r4380568 * r4380568;
double r4380577 = r4380569 * r4380576;
double r4380578 = r4380565 - r4380577;
double r4380579 = r4380578 + r4380567;
double r4380580 = cbrt(r4380579);
double r4380581 = r4380580 * r4380580;
double r4380582 = r4380575 / r4380581;
double r4380583 = r4380574 / r4380580;
double r4380584 = r4380582 * r4380583;
return r4380584;
}




Bits error versus x
Results
| Original | 61.3 |
|---|---|
| Target | 0.4 |
| Herbie | 0.5 |
Initial program 61.3
Taylor expanded around 0 60.4
Simplified60.4
Taylor expanded around 0 0.5
Simplified0.5
rmApplied add-cube-cbrt1.8
Applied add-cube-cbrt0.5
Applied times-frac0.5
Final simplification0.5
herbie shell --seed 2019165
(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))))