\cos \left(x + \varepsilon\right) - \cos x
\sin \left(\frac{1}{2} \cdot \varepsilon\right) \cdot \left(\left(\mathsf{log1p}\left(\mathsf{expm1}\left(\sin \left(\frac{1}{2} \cdot \varepsilon\right) \cdot \cos x\right)\right) + \cos \left(\frac{1}{2} \cdot \varepsilon\right) \cdot \sin x\right) \cdot -2\right)double f(double x, double eps) {
double r44370 = x;
double r44371 = eps;
double r44372 = r44370 + r44371;
double r44373 = cos(r44372);
double r44374 = cos(r44370);
double r44375 = r44373 - r44374;
return r44375;
}
double f(double x, double eps) {
double r44376 = 0.5;
double r44377 = eps;
double r44378 = r44376 * r44377;
double r44379 = sin(r44378);
double r44380 = x;
double r44381 = cos(r44380);
double r44382 = r44379 * r44381;
double r44383 = expm1(r44382);
double r44384 = log1p(r44383);
double r44385 = cos(r44378);
double r44386 = sin(r44380);
double r44387 = r44385 * r44386;
double r44388 = r44384 + r44387;
double r44389 = -2.0;
double r44390 = r44388 * r44389;
double r44391 = r44379 * r44390;
return r44391;
}



Bits error versus x



Bits error versus eps
Results
Initial program 39.5
rmApplied diff-cos34.0
Simplified14.5
Taylor expanded around inf 14.5
Simplified14.5
rmApplied fma-udef14.5
Applied sin-sum0.4
rmApplied log1p-expm1-u0.4
Final simplification0.4
herbie shell --seed 2019208 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))