\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]{\left(1 \cdot x + \log 1\right) - \frac{1}{2} \cdot \frac{{x}^{2}}{{1}^{2}}} \cdot \sqrt[3]{\left(1 \cdot x + \log 1\right) - \frac{1}{2} \cdot \frac{{x}^{2}}{{1}^{2}}}} \cdot \frac{\sqrt[3]{\log 1 - \left(1 \cdot x + \frac{1}{2} \cdot \frac{{x}^{2}}{{1}^{2}}\right)}}{\sqrt[3]{\left(1 \cdot x + \log 1\right) - \frac{1}{2} \cdot \frac{{x}^{2}}{{1}^{2}}}}double f(double x) {
double r73112 = 1.0;
double r73113 = x;
double r73114 = r73112 - r73113;
double r73115 = log(r73114);
double r73116 = r73112 + r73113;
double r73117 = log(r73116);
double r73118 = r73115 / r73117;
return r73118;
}
double f(double x) {
double r73119 = 1.0;
double r73120 = log(r73119);
double r73121 = x;
double r73122 = r73119 * r73121;
double r73123 = 0.5;
double r73124 = 2.0;
double r73125 = pow(r73121, r73124);
double r73126 = pow(r73119, r73124);
double r73127 = r73125 / r73126;
double r73128 = r73123 * r73127;
double r73129 = r73122 + r73128;
double r73130 = r73120 - r73129;
double r73131 = cbrt(r73130);
double r73132 = r73131 * r73131;
double r73133 = r73122 + r73120;
double r73134 = r73133 - r73128;
double r73135 = cbrt(r73134);
double r73136 = r73135 * r73135;
double r73137 = r73132 / r73136;
double r73138 = r73131 / r73135;
double r73139 = r73137 * r73138;
return r73139;
}




Bits error versus x
Results
| Original | 61.3 |
|---|---|
| Target | 0.4 |
| Herbie | 0.5 |
Initial program 61.3
Taylor expanded around 0 60.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
(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))))