\cos \left(x + \varepsilon\right) - \cos x
\mathsf{log1p}\left(\mathsf{expm1}\left(\mathsf{fma}\left(\cos \left(\frac{1}{2} \cdot \varepsilon\right), \sin x, \sin \left(\frac{1}{2} \cdot \varepsilon\right) \cdot \cos x\right)\right)\right) \cdot \left(-2 \cdot \sin \left(\frac{1}{2} \cdot \varepsilon\right)\right)double f(double x, double eps) {
double r20580 = x;
double r20581 = eps;
double r20582 = r20580 + r20581;
double r20583 = cos(r20582);
double r20584 = cos(r20580);
double r20585 = r20583 - r20584;
return r20585;
}
double f(double x, double eps) {
double r20586 = 0.5;
double r20587 = eps;
double r20588 = r20586 * r20587;
double r20589 = cos(r20588);
double r20590 = x;
double r20591 = sin(r20590);
double r20592 = sin(r20588);
double r20593 = cos(r20590);
double r20594 = r20592 * r20593;
double r20595 = fma(r20589, r20591, r20594);
double r20596 = expm1(r20595);
double r20597 = log1p(r20596);
double r20598 = -2.0;
double r20599 = r20598 * r20592;
double r20600 = r20597 * r20599;
return r20600;
}



Bits error versus x



Bits error versus eps
Initial program 39.3
rmApplied diff-cos33.8
Simplified15.0
Taylor expanded around inf 15.0
Simplified14.9
rmApplied fma-udef14.9
Applied sin-sum0.3
rmApplied log1p-expm1-u0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2019303 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))