\frac{\log \left(1 - x\right)}{\log \left(1 + x\right)}\frac{\sqrt[3]{\log 1 - \left(1 \cdot x + \frac{1}{2} \cdot \frac{{x}^{2}}{{1}^{2}}\right)} \cdot \sqrt[3]{\log 1 - \left(1 \cdot x + \frac{1}{2} \cdot \frac{{x}^{2}}{{1}^{2}}\right)}}{\sqrt[3]{\mathsf{fma}\left(x, 1, \log 1 - \frac{1}{2} \cdot \frac{{x}^{2}}{{1}^{2}}\right)} \cdot \sqrt[3]{\mathsf{fma}\left(x, 1, \log 1 - \frac{1}{2} \cdot \frac{{x}^{2}}{{1}^{2}}\right)}} \cdot \frac{\sqrt[3]{\log 1 - \left(1 \cdot x + \frac{1}{2} \cdot \frac{{x}^{2}}{{1}^{2}}\right)}}{\sqrt[3]{\mathsf{fma}\left(x, 1, \log 1 - \frac{1}{2} \cdot \frac{{x}^{2}}{{1}^{2}}\right)}}double f(double x) {
double r97462 = 1.0;
double r97463 = x;
double r97464 = r97462 - r97463;
double r97465 = log(r97464);
double r97466 = r97462 + r97463;
double r97467 = log(r97466);
double r97468 = r97465 / r97467;
return r97468;
}
double f(double x) {
double r97469 = 1.0;
double r97470 = log(r97469);
double r97471 = x;
double r97472 = r97469 * r97471;
double r97473 = 0.5;
double r97474 = 2.0;
double r97475 = pow(r97471, r97474);
double r97476 = pow(r97469, r97474);
double r97477 = r97475 / r97476;
double r97478 = r97473 * r97477;
double r97479 = r97472 + r97478;
double r97480 = r97470 - r97479;
double r97481 = cbrt(r97480);
double r97482 = r97481 * r97481;
double r97483 = r97470 - r97478;
double r97484 = fma(r97471, r97469, r97483);
double r97485 = cbrt(r97484);
double r97486 = r97485 * r97485;
double r97487 = r97482 / r97486;
double r97488 = r97481 / r97485;
double r97489 = r97487 * r97488;
return r97489;
}




Bits error versus x
| Original | 61.3 |
|---|---|
| Target | 0.4 |
| Herbie | 0.5 |
Initial program 61.3
Taylor expanded around 0 60.5
Simplified60.5
Taylor expanded around 0 0.5
rmApplied add-cube-cbrt1.8
Applied add-cube-cbrt0.5
Applied times-frac0.5
Final simplification0.5
herbie shell --seed 2020081 +o rules:numerics
(FPCore (x)
:name "qlog (example 3.10)"
:precision binary64
:pre (and (< -1 x) (< x 1))
:herbie-target
(- (+ (+ (+ 1 x) (/ (* x x) 2)) (* 0.4166666666666667 (pow x 3))))
(/ (log (- 1 x)) (log (+ 1 x))))