\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 r105924 = 1.0;
double r105925 = x;
double r105926 = r105924 - r105925;
double r105927 = log(r105926);
double r105928 = r105924 + r105925;
double r105929 = log(r105928);
double r105930 = r105927 / r105929;
return r105930;
}
double f(double x) {
double r105931 = 1.0;
double r105932 = log(r105931);
double r105933 = x;
double r105934 = r105931 * r105933;
double r105935 = 0.5;
double r105936 = 2.0;
double r105937 = pow(r105933, r105936);
double r105938 = pow(r105931, r105936);
double r105939 = r105937 / r105938;
double r105940 = r105935 * r105939;
double r105941 = r105934 + r105940;
double r105942 = r105932 - r105941;
double r105943 = cbrt(r105942);
double r105944 = r105943 * r105943;
double r105945 = r105932 - r105940;
double r105946 = fma(r105933, r105931, r105945);
double r105947 = cbrt(r105946);
double r105948 = r105947 * r105947;
double r105949 = r105944 / r105948;
double r105950 = r105943 / r105947;
double r105951 = r105949 * r105950;
return r105951;
}




Bits error versus x
| Original | 61.4 |
|---|---|
| Target | 0.4 |
| Herbie | 0.5 |
Initial program 61.4
Taylor expanded around 0 60.6
Simplified60.6
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 2020024 +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))))