\log \left(\frac{1 - \varepsilon}{1 + \varepsilon}\right)-\left(\left(\frac{2}{3} \cdot \frac{{\varepsilon}^{3}}{{1}^{3}} + \frac{2}{5} \cdot \frac{{\varepsilon}^{5}}{{1}^{5}}\right) + 2 \cdot \varepsilon\right)double f(double eps) {
double r90141 = 1.0;
double r90142 = eps;
double r90143 = r90141 - r90142;
double r90144 = r90141 + r90142;
double r90145 = r90143 / r90144;
double r90146 = log(r90145);
return r90146;
}
double f(double eps) {
double r90147 = 0.6666666666666666;
double r90148 = eps;
double r90149 = 3.0;
double r90150 = pow(r90148, r90149);
double r90151 = 1.0;
double r90152 = pow(r90151, r90149);
double r90153 = r90150 / r90152;
double r90154 = r90147 * r90153;
double r90155 = 0.4;
double r90156 = 5.0;
double r90157 = pow(r90148, r90156);
double r90158 = pow(r90151, r90156);
double r90159 = r90157 / r90158;
double r90160 = r90155 * r90159;
double r90161 = r90154 + r90160;
double r90162 = 2.0;
double r90163 = r90162 * r90148;
double r90164 = r90161 + r90163;
double r90165 = -r90164;
return r90165;
}




Bits error versus eps
Results
| Original | 58.7 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 58.7
rmApplied log-div58.6
Taylor expanded around 0 0.2
rmApplied associate-+r+0.2
Final simplification0.2
herbie shell --seed 2020002
(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))))