\log \left(\frac{1 - \varepsilon}{1 + \varepsilon}\right)\frac{{\varepsilon}^{3}}{{1}^{3}} \cdot \frac{-2}{3} - \left(\frac{2}{5} \cdot \frac{{\varepsilon}^{5}}{{1}^{5}} + 2 \cdot \varepsilon\right)double f(double eps) {
double r36156 = 1.0;
double r36157 = eps;
double r36158 = r36156 - r36157;
double r36159 = r36156 + r36157;
double r36160 = r36158 / r36159;
double r36161 = log(r36160);
return r36161;
}
double f(double eps) {
double r36162 = eps;
double r36163 = 3.0;
double r36164 = pow(r36162, r36163);
double r36165 = 1.0;
double r36166 = pow(r36165, r36163);
double r36167 = r36164 / r36166;
double r36168 = -0.6666666666666666;
double r36169 = r36167 * r36168;
double r36170 = 0.4;
double r36171 = 5.0;
double r36172 = pow(r36162, r36171);
double r36173 = pow(r36165, r36171);
double r36174 = r36172 / r36173;
double r36175 = r36170 * r36174;
double r36176 = 2.0;
double r36177 = r36176 * r36162;
double r36178 = r36175 + r36177;
double r36179 = r36169 - r36178;
return r36179;
}




Bits error versus eps
Results
| Original | 58.6 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 58.6
rmApplied div-inv58.6
Applied log-prod58.6
Simplified58.6
Taylor expanded around 0 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019235
(FPCore (eps)
:name "logq (problem 3.4.3)"
:precision binary64
:herbie-target
(* -2 (+ (+ eps (/ (pow eps 3) 3)) (/ (pow eps 5) 5)))
(log (/ (- 1 eps) (+ 1 eps))))