\sin \left(x + \varepsilon\right) - \sin x
\left(\sin \left(\frac{\varepsilon}{2}\right) \cdot -2\right) \cdot \left(\sin x \cdot \sin \left(\frac{\varepsilon}{2}\right)\right) + \left(\sin \left(\frac{\varepsilon}{2}\right) \cdot 2\right) \cdot \left(\cos x \cdot \cos \left(\frac{\varepsilon}{2}\right)\right)double f(double x, double eps) {
double r5608388 = x;
double r5608389 = eps;
double r5608390 = r5608388 + r5608389;
double r5608391 = sin(r5608390);
double r5608392 = sin(r5608388);
double r5608393 = r5608391 - r5608392;
return r5608393;
}
double f(double x, double eps) {
double r5608394 = eps;
double r5608395 = 2.0;
double r5608396 = r5608394 / r5608395;
double r5608397 = sin(r5608396);
double r5608398 = -2.0;
double r5608399 = r5608397 * r5608398;
double r5608400 = x;
double r5608401 = sin(r5608400);
double r5608402 = r5608401 * r5608397;
double r5608403 = r5608399 * r5608402;
double r5608404 = r5608397 * r5608395;
double r5608405 = cos(r5608400);
double r5608406 = cos(r5608396);
double r5608407 = r5608405 * r5608406;
double r5608408 = r5608404 * r5608407;
double r5608409 = r5608403 + r5608408;
return r5608409;
}




Bits error versus x




Bits error versus eps
Results
| Original | 36.8 |
|---|---|
| Target | 14.9 |
| Herbie | 0.3 |
Initial program 36.8
rmApplied diff-sin37.1
Simplified14.9
Taylor expanded around inf 14.9
Simplified14.9
rmApplied cos-sum0.3
rmApplied sub-neg0.3
Applied distribute-lft-in0.3
Final simplification0.3
herbie shell --seed 2019168
(FPCore (x eps)
:name "2sin (example 3.3)"
:herbie-target
(* 2 (* (cos (+ x (/ eps 2))) (sin (/ eps 2))))
(- (sin (+ x eps)) (sin x)))