\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -2.166612289023348716228650843312886209446 \cdot 10^{-7}:\\
\;\;\;\;\mathsf{fma}\left(-\sqrt[3]{\cos x}, \sqrt[3]{\cos x} \cdot \sqrt[3]{\cos x}, \sqrt[3]{\cos x} \cdot \left(\sqrt[3]{\cos x} \cdot \sqrt[3]{\cos x}\right)\right) + \mathsf{fma}\left(\cos x, \cos \varepsilon, \mathsf{fma}\left(-\sin \varepsilon, \sin x, \sqrt[3]{\mathsf{fma}\left(-\sin \varepsilon, \sin x, \sin \varepsilon \cdot \sin x\right)} \cdot \left(\sqrt[3]{\mathsf{fma}\left(-\sin \varepsilon, \sin x, \sin \varepsilon \cdot \sin x\right)} \cdot \sqrt[3]{\mathsf{fma}\left(-\sin \varepsilon, \sin x, \sin \varepsilon \cdot \sin x\right)}\right) - \cos x\right)\right)\\
\mathbf{elif}\;\varepsilon \le 9.272024129006377240531960219963036884394 \cdot 10^{-8}:\\
\;\;\;\;\left(\frac{1}{6} \cdot \varepsilon\right) \cdot \left(x \cdot \left(x \cdot x\right)\right) - \mathsf{fma}\left(x, \varepsilon, \left(\varepsilon \cdot \frac{1}{2}\right) \cdot \varepsilon\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(-\sqrt[3]{\cos x}, \sqrt[3]{\cos x} \cdot \sqrt[3]{\cos x}, \sqrt[3]{\cos x} \cdot \left(\sqrt[3]{\cos x} \cdot \sqrt[3]{\cos x}\right)\right) + \mathsf{fma}\left(\cos x, \cos \varepsilon, \mathsf{fma}\left(-\sin \varepsilon, \sin x, \sqrt[3]{\mathsf{fma}\left(-\sin \varepsilon, \sin x, \sin \varepsilon \cdot \sin x\right)} \cdot \left(\sqrt[3]{\mathsf{fma}\left(-\sin \varepsilon, \sin x, \sin \varepsilon \cdot \sin x\right)} \cdot \sqrt[3]{\mathsf{fma}\left(-\sin \varepsilon, \sin x, \sin \varepsilon \cdot \sin x\right)}\right) - \cos x\right)\right)\\
\end{array}double f(double x, double eps) {
double r1985654 = x;
double r1985655 = eps;
double r1985656 = r1985654 + r1985655;
double r1985657 = cos(r1985656);
double r1985658 = cos(r1985654);
double r1985659 = r1985657 - r1985658;
return r1985659;
}
double f(double x, double eps) {
double r1985660 = eps;
double r1985661 = -2.1666122890233487e-07;
bool r1985662 = r1985660 <= r1985661;
double r1985663 = x;
double r1985664 = cos(r1985663);
double r1985665 = cbrt(r1985664);
double r1985666 = -r1985665;
double r1985667 = r1985665 * r1985665;
double r1985668 = r1985665 * r1985667;
double r1985669 = fma(r1985666, r1985667, r1985668);
double r1985670 = cos(r1985660);
double r1985671 = sin(r1985660);
double r1985672 = -r1985671;
double r1985673 = sin(r1985663);
double r1985674 = r1985671 * r1985673;
double r1985675 = fma(r1985672, r1985673, r1985674);
double r1985676 = cbrt(r1985675);
double r1985677 = r1985676 * r1985676;
double r1985678 = r1985676 * r1985677;
double r1985679 = r1985678 - r1985664;
double r1985680 = fma(r1985672, r1985673, r1985679);
double r1985681 = fma(r1985664, r1985670, r1985680);
double r1985682 = r1985669 + r1985681;
double r1985683 = 9.272024129006377e-08;
bool r1985684 = r1985660 <= r1985683;
double r1985685 = 0.16666666666666666;
double r1985686 = r1985685 * r1985660;
double r1985687 = r1985663 * r1985663;
double r1985688 = r1985663 * r1985687;
double r1985689 = r1985686 * r1985688;
double r1985690 = 0.5;
double r1985691 = r1985660 * r1985690;
double r1985692 = r1985691 * r1985660;
double r1985693 = fma(r1985663, r1985660, r1985692);
double r1985694 = r1985689 - r1985693;
double r1985695 = r1985684 ? r1985694 : r1985682;
double r1985696 = r1985662 ? r1985682 : r1985695;
return r1985696;
}



Bits error versus x



Bits error versus eps
if eps < -2.1666122890233487e-07 or 9.272024129006377e-08 < eps Initial program 30.3
rmApplied cos-sum1.1
rmApplied prod-diff1.1
Applied associate--l+1.1
rmApplied add-cube-cbrt1.5
Applied add-cube-cbrt1.5
Applied prod-diff1.5
Applied associate-+r+1.5
Simplified1.1
if -2.1666122890233487e-07 < eps < 9.272024129006377e-08Initial program 50.0
rmApplied cos-sum49.5
Taylor expanded around 0 32.5
Simplified32.5
Final simplification16.3
herbie shell --seed 2019174 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
(- (cos (+ x eps)) (cos x)))