\frac{\log \left(1 - x\right)}{\log \left(1 + x\right)}\sqrt[3]{\frac{\left(\log 1 - \left(\frac{x}{1} \cdot \frac{x}{1}\right) \cdot \frac{1}{2}\right) - 1 \cdot x}{\frac{-1}{2} \cdot \left(\frac{x}{1} \cdot \frac{x}{1}\right) + \left(\log 1 + 1 \cdot x\right)} \cdot \left(\left(\sqrt[3]{\frac{\left(\log 1 - \left(\frac{x}{1} \cdot \frac{x}{1}\right) \cdot \frac{1}{2}\right) - 1 \cdot x}{\frac{-1}{2} \cdot \left(\frac{x}{1} \cdot \frac{x}{1}\right) + \left(\log 1 + 1 \cdot x\right)} \cdot \frac{\left(\log 1 - \left(\frac{x}{1} \cdot \frac{x}{1}\right) \cdot \frac{1}{2}\right) - 1 \cdot x}{\frac{-1}{2} \cdot \left(\frac{x}{1} \cdot \frac{x}{1}\right) + \left(\log 1 + 1 \cdot x\right)}} \cdot \sqrt[3]{\frac{\left(\log 1 - \left(\frac{x}{1} \cdot \frac{x}{1}\right) \cdot \frac{1}{2}\right) - 1 \cdot x}{\frac{-1}{2} \cdot \left(\frac{x}{1} \cdot \frac{x}{1}\right) + \left(\log 1 + 1 \cdot x\right)} \cdot \frac{\left(\log 1 - \left(\frac{x}{1} \cdot \frac{x}{1}\right) \cdot \frac{1}{2}\right) - 1 \cdot x}{\frac{-1}{2} \cdot \left(\frac{x}{1} \cdot \frac{x}{1}\right) + \left(\log 1 + 1 \cdot x\right)}}\right) \cdot \sqrt[3]{\frac{\left(\log 1 - \left(\frac{x}{1} \cdot \frac{x}{1}\right) \cdot \frac{1}{2}\right) - 1 \cdot x}{\frac{-1}{2} \cdot \left(\frac{x}{1} \cdot \frac{x}{1}\right) + \left(\log 1 + 1 \cdot x\right)} \cdot \frac{\left(\log 1 - \left(\frac{x}{1} \cdot \frac{x}{1}\right) \cdot \frac{1}{2}\right) - 1 \cdot x}{\frac{-1}{2} \cdot \left(\frac{x}{1} \cdot \frac{x}{1}\right) + \left(\log 1 + 1 \cdot x\right)}}\right)}double f(double x) {
double r4109906 = 1.0;
double r4109907 = x;
double r4109908 = r4109906 - r4109907;
double r4109909 = log(r4109908);
double r4109910 = r4109906 + r4109907;
double r4109911 = log(r4109910);
double r4109912 = r4109909 / r4109911;
return r4109912;
}
double f(double x) {
double r4109913 = 1.0;
double r4109914 = log(r4109913);
double r4109915 = x;
double r4109916 = r4109915 / r4109913;
double r4109917 = r4109916 * r4109916;
double r4109918 = 0.5;
double r4109919 = r4109917 * r4109918;
double r4109920 = r4109914 - r4109919;
double r4109921 = r4109913 * r4109915;
double r4109922 = r4109920 - r4109921;
double r4109923 = -0.5;
double r4109924 = r4109923 * r4109917;
double r4109925 = r4109914 + r4109921;
double r4109926 = r4109924 + r4109925;
double r4109927 = r4109922 / r4109926;
double r4109928 = r4109927 * r4109927;
double r4109929 = cbrt(r4109928);
double r4109930 = r4109929 * r4109929;
double r4109931 = r4109930 * r4109929;
double r4109932 = r4109927 * r4109931;
double r4109933 = cbrt(r4109932);
return r4109933;
}




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 add-cbrt-cube43.2
Applied add-cbrt-cube42.6
Applied cbrt-undiv42.6
Simplified0.4
rmApplied add-cube-cbrt0.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))))