\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -7.92917019758384 \cdot 10^{-09}:\\
\;\;\;\;\mathsf{fma}\left(\left(\cos x\right), \left(\cos \varepsilon\right), \left(-\mathsf{log1p}\left(\left(\mathsf{expm1}\left(\left(\mathsf{fma}\left(\left(\sin \varepsilon\right), \left(\sin x\right), \left(\cos x\right)\right)\right)\right)\right)\right)\right)\right)\\
\mathbf{elif}\;\varepsilon \le 4.7672729100119475 \cdot 10^{-08}:\\
\;\;\;\;\mathsf{fma}\left(\left(x \cdot \left(\left(x \cdot \varepsilon\right) \cdot x\right)\right), \frac{1}{6}, \left(\left(\varepsilon \cdot \varepsilon\right) \cdot \frac{-1}{2} - x \cdot \varepsilon\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\left(\cos x\right), \left(\cos \varepsilon\right), \left(-\mathsf{log1p}\left(\left(\mathsf{expm1}\left(\left(\mathsf{fma}\left(\left(\sin \varepsilon\right), \left(\sin x\right), \left(\cos x\right)\right)\right)\right)\right)\right)\right)\right)\\
\end{array}double f(double x, double eps) {
double r977289 = x;
double r977290 = eps;
double r977291 = r977289 + r977290;
double r977292 = cos(r977291);
double r977293 = cos(r977289);
double r977294 = r977292 - r977293;
return r977294;
}
double f(double x, double eps) {
double r977295 = eps;
double r977296 = -7.92917019758384e-09;
bool r977297 = r977295 <= r977296;
double r977298 = x;
double r977299 = cos(r977298);
double r977300 = cos(r977295);
double r977301 = sin(r977295);
double r977302 = sin(r977298);
double r977303 = fma(r977301, r977302, r977299);
double r977304 = expm1(r977303);
double r977305 = log1p(r977304);
double r977306 = -r977305;
double r977307 = fma(r977299, r977300, r977306);
double r977308 = 4.7672729100119475e-08;
bool r977309 = r977295 <= r977308;
double r977310 = r977298 * r977295;
double r977311 = r977310 * r977298;
double r977312 = r977298 * r977311;
double r977313 = 0.16666666666666666;
double r977314 = r977295 * r977295;
double r977315 = -0.5;
double r977316 = r977314 * r977315;
double r977317 = r977316 - r977310;
double r977318 = fma(r977312, r977313, r977317);
double r977319 = r977309 ? r977318 : r977307;
double r977320 = r977297 ? r977307 : r977319;
return r977320;
}



Bits error versus x



Bits error versus eps
if eps < -7.92917019758384e-09 or 4.7672729100119475e-08 < eps Initial program 30.9
rmApplied cos-sum1.1
Applied associate--l-1.2
Simplified1.1
rmApplied fma-neg1.1
rmApplied log1p-expm1-u1.2
if -7.92917019758384e-09 < eps < 4.7672729100119475e-08Initial program 48.9
Taylor expanded around 0 31.4
Simplified31.4
Final simplification16.0
herbie shell --seed 2019128 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
(- (cos (+ x eps)) (cos x)))