\sin \left(x + \varepsilon\right) - \sin x
\log \left(e^{\sin x \cdot \left(\cos \varepsilon - 1\right)}\right) + \cos x \cdot \sin \varepsilondouble f(double x, double eps) {
double r118383 = x;
double r118384 = eps;
double r118385 = r118383 + r118384;
double r118386 = sin(r118385);
double r118387 = sin(r118383);
double r118388 = r118386 - r118387;
return r118388;
}
double f(double x, double eps) {
double r118389 = x;
double r118390 = sin(r118389);
double r118391 = eps;
double r118392 = cos(r118391);
double r118393 = 1.0;
double r118394 = r118392 - r118393;
double r118395 = r118390 * r118394;
double r118396 = exp(r118395);
double r118397 = log(r118396);
double r118398 = cos(r118389);
double r118399 = sin(r118391);
double r118400 = r118398 * r118399;
double r118401 = r118397 + r118400;
return r118401;
}




Bits error versus x




Bits error versus eps
Results
| Original | 37.1 |
|---|---|
| Target | 15.5 |
| Herbie | 0.4 |
Initial program 37.1
rmApplied sin-sum21.5
Applied associate--l+21.5
Taylor expanded around inf 21.5
Simplified0.4
rmApplied add-log-exp0.4
Final simplification0.4
herbie shell --seed 2019344
(FPCore (x eps)
:name "2sin (example 3.3)"
:precision binary64
:herbie-target
(* 2 (* (cos (+ x (/ eps 2))) (sin (/ eps 2))))
(- (sin (+ x eps)) (sin x)))