\log \left(\frac{1 - \varepsilon}{1 + \varepsilon}\right)\log \left({1}^{3} - {\varepsilon}^{3}\right) - \left(\varepsilon \cdot \left(\varepsilon \cdot 0.5 + 2\right) + \left(2 \cdot \log 1 - \frac{1}{2} \cdot \frac{{\varepsilon}^{2}}{{1}^{2}}\right)\right)double f(double eps) {
double r88190 = 1.0;
double r88191 = eps;
double r88192 = r88190 - r88191;
double r88193 = r88190 + r88191;
double r88194 = r88192 / r88193;
double r88195 = log(r88194);
return r88195;
}
double f(double eps) {
double r88196 = 1.0;
double r88197 = 3.0;
double r88198 = pow(r88196, r88197);
double r88199 = eps;
double r88200 = pow(r88199, r88197);
double r88201 = r88198 - r88200;
double r88202 = log(r88201);
double r88203 = 0.5;
double r88204 = r88199 * r88203;
double r88205 = 2.0;
double r88206 = r88204 + r88205;
double r88207 = r88199 * r88206;
double r88208 = 2.0;
double r88209 = log(r88196);
double r88210 = r88208 * r88209;
double r88211 = 0.5;
double r88212 = pow(r88199, r88208);
double r88213 = pow(r88196, r88208);
double r88214 = r88212 / r88213;
double r88215 = r88211 * r88214;
double r88216 = r88210 - r88215;
double r88217 = r88207 + r88216;
double r88218 = r88202 - r88217;
return r88218;
}




Bits error versus eps
Results
| Original | 58.5 |
|---|---|
| Target | 0.2 |
| Herbie | 0.6 |
Initial program 58.5
rmApplied div-inv58.5
Applied log-prod58.5
rmApplied flip3--58.5
Applied log-div58.5
Applied associate-+l-58.5
Simplified58.5
Taylor expanded around 0 0.6
Simplified0.6
Final simplification0.6
herbie shell --seed 2020046
(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))))