\[\cos \left(x + \varepsilon\right) - \cos x
\]
↓
\[\begin{array}{l}
\mathbf{if}\;x \leq -1.6 \cdot 10^{-17} \lor \neg \left(x \leq 3.1 \cdot 10^{-14}\right):\\
\;\;\;\;\mathsf{fma}\left(\sin x, -\sin \varepsilon, \mathsf{fma}\left(\cos x, \cos \varepsilon, -\cos x\right)\right) + \left(\cos x - \cos x\right)\\
\mathbf{else}:\\
\;\;\;\;\sin \left(0.5 \cdot \left(\varepsilon + \left(x - x\right)\right)\right) \cdot \left(-2 \cdot \sin \left(0.5 \cdot \left(\varepsilon + \left(x + x\right)\right)\right)\right)\\
\end{array}
\]
(FPCore (x eps) :precision binary64 (- (cos (+ x eps)) (cos x)))
↓
(FPCore (x eps)
:precision binary64
(if (or (<= x -1.6e-17) (not (<= x 3.1e-14)))
(+
(fma (sin x) (- (sin eps)) (fma (cos x) (cos eps) (- (cos x))))
(- (cos x) (cos x)))
(* (sin (* 0.5 (+ eps (- x x)))) (* -2.0 (sin (* 0.5 (+ eps (+ x x))))))))double code(double x, double eps) {
return cos((x + eps)) - cos(x);
}
↓
double code(double x, double eps) {
double tmp;
if ((x <= -1.6e-17) || !(x <= 3.1e-14)) {
tmp = fma(sin(x), -sin(eps), fma(cos(x), cos(eps), -cos(x))) + (cos(x) - cos(x));
} else {
tmp = sin((0.5 * (eps + (x - x)))) * (-2.0 * sin((0.5 * (eps + (x + x)))));
}
return tmp;
}
function code(x, eps)
return Float64(cos(Float64(x + eps)) - cos(x))
end
↓
function code(x, eps)
tmp = 0.0
if ((x <= -1.6e-17) || !(x <= 3.1e-14))
tmp = Float64(fma(sin(x), Float64(-sin(eps)), fma(cos(x), cos(eps), Float64(-cos(x)))) + Float64(cos(x) - cos(x)));
else
tmp = Float64(sin(Float64(0.5 * Float64(eps + Float64(x - x)))) * Float64(-2.0 * sin(Float64(0.5 * Float64(eps + Float64(x + x))))));
end
return tmp
end
code[x_, eps_] := N[(N[Cos[N[(x + eps), $MachinePrecision]], $MachinePrecision] - N[Cos[x], $MachinePrecision]), $MachinePrecision]
↓
code[x_, eps_] := If[Or[LessEqual[x, -1.6e-17], N[Not[LessEqual[x, 3.1e-14]], $MachinePrecision]], N[(N[(N[Sin[x], $MachinePrecision] * (-N[Sin[eps], $MachinePrecision]) + N[(N[Cos[x], $MachinePrecision] * N[Cos[eps], $MachinePrecision] + (-N[Cos[x], $MachinePrecision])), $MachinePrecision]), $MachinePrecision] + N[(N[Cos[x], $MachinePrecision] - N[Cos[x], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[Sin[N[(0.5 * N[(eps + N[(x - x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * N[(-2.0 * N[Sin[N[(0.5 * N[(eps + N[(x + x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\cos \left(x + \varepsilon\right) - \cos x
↓
\begin{array}{l}
\mathbf{if}\;x \leq -1.6 \cdot 10^{-17} \lor \neg \left(x \leq 3.1 \cdot 10^{-14}\right):\\
\;\;\;\;\mathsf{fma}\left(\sin x, -\sin \varepsilon, \mathsf{fma}\left(\cos x, \cos \varepsilon, -\cos x\right)\right) + \left(\cos x - \cos x\right)\\
\mathbf{else}:\\
\;\;\;\;\sin \left(0.5 \cdot \left(\varepsilon + \left(x - x\right)\right)\right) \cdot \left(-2 \cdot \sin \left(0.5 \cdot \left(\varepsilon + \left(x + x\right)\right)\right)\right)\\
\end{array}
Alternatives
| Alternative 1 |
|---|
| Error | 0.6 |
|---|
| Cost | 45700 |
|---|
\[\begin{array}{l}
t_0 := -\sin \varepsilon\\
t_1 := \cos \varepsilon + -1\\
\mathbf{if}\;x \leq -9 \cdot 10^{-20}:\\
\;\;\;\;\left(\cos x - \cos x\right) + \mathsf{fma}\left(\sin x, t_0, \cos x \cdot t_1\right)\\
\mathbf{elif}\;x \leq 3.1 \cdot 10^{-14}:\\
\;\;\;\;\sin \left(0.5 \cdot \left(\varepsilon + \left(x - x\right)\right)\right) \cdot \left(-2 \cdot \sin \left(0.5 \cdot \left(\varepsilon + \left(x + x\right)\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(t_1, \cos x, \sin x \cdot t_0\right)\\
\end{array}
\]
| Alternative 2 |
|---|
| Error | 0.5 |
|---|
| Cost | 32776 |
|---|
\[\begin{array}{l}
t_0 := \cos \varepsilon + -1\\
\mathbf{if}\;x \leq -6.2 \cdot 10^{-16}:\\
\;\;\;\;\cos x \cdot t_0 - \sin x \cdot \sin \varepsilon\\
\mathbf{elif}\;x \leq 3.1 \cdot 10^{-14}:\\
\;\;\;\;\sin \left(0.5 \cdot \left(\varepsilon + \left(x - x\right)\right)\right) \cdot \left(-2 \cdot \sin \left(0.5 \cdot \left(\varepsilon + \left(x + x\right)\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(t_0, \cos x, \sin x \cdot \left(-\sin \varepsilon\right)\right)\\
\end{array}
\]
| Alternative 3 |
|---|
| Error | 0.6 |
|---|
| Cost | 32776 |
|---|
\[\begin{array}{l}
\mathbf{if}\;x \leq -5 \cdot 10^{-18}:\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \cos x\right) - \sin x \cdot \sin \varepsilon\\
\mathbf{elif}\;x \leq 3.1 \cdot 10^{-14}:\\
\;\;\;\;\sin \left(0.5 \cdot \left(\varepsilon + \left(x - x\right)\right)\right) \cdot \left(-2 \cdot \sin \left(0.5 \cdot \left(\varepsilon + \left(x + x\right)\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\cos \varepsilon + -1, \cos x, \sin x \cdot \left(-\sin \varepsilon\right)\right)\\
\end{array}
\]
| Alternative 4 |
|---|
| Error | 0.6 |
|---|
| Cost | 26441 |
|---|
\[\begin{array}{l}
\mathbf{if}\;x \leq -5.5 \cdot 10^{-17} \lor \neg \left(x \leq 4.3 \cdot 10^{-14}\right):\\
\;\;\;\;\cos x \cdot \left(\cos \varepsilon + -1\right) - \sin x \cdot \sin \varepsilon\\
\mathbf{else}:\\
\;\;\;\;\sin \left(0.5 \cdot \left(\varepsilon + \left(x - x\right)\right)\right) \cdot \left(-2 \cdot \sin \left(0.5 \cdot \left(\varepsilon + \left(x + x\right)\right)\right)\right)\\
\end{array}
\]
| Alternative 5 |
|---|
| Error | 14.7 |
|---|
| Cost | 13888 |
|---|
\[\sin \left(0.5 \cdot \left(\varepsilon + \left(x - x\right)\right)\right) \cdot \left(-2 \cdot \sin \left(0.5 \cdot \left(\varepsilon + \left(x + x\right)\right)\right)\right)
\]
| Alternative 6 |
|---|
| Error | 14.4 |
|---|
| Cost | 13769 |
|---|
\[\begin{array}{l}
\mathbf{if}\;\varepsilon \leq -0.0017 \lor \neg \left(\varepsilon \leq 0.002\right):\\
\;\;\;\;\cos \varepsilon - \cos x\\
\mathbf{else}:\\
\;\;\;\;-0.5 \cdot \left(\cos x \cdot \left(\varepsilon \cdot \varepsilon\right)\right) - \sin x \cdot \varepsilon\\
\end{array}
\]
| Alternative 7 |
|---|
| Error | 21.6 |
|---|
| Cost | 13576 |
|---|
\[\begin{array}{l}
t_0 := \cos \varepsilon - \cos x\\
\mathbf{if}\;\varepsilon \leq -0.0045:\\
\;\;\;\;t_0\\
\mathbf{elif}\;\varepsilon \leq -5.2 \cdot 10^{-123}:\\
\;\;\;\;\mathsf{fma}\left(0.041666666666666664, {\varepsilon}^{4}, -0.5 \cdot \left(\varepsilon \cdot \varepsilon\right)\right)\\
\mathbf{elif}\;\varepsilon \leq 7.2 \cdot 10^{-7}:\\
\;\;\;\;\sin x \cdot \left(-\varepsilon\right)\\
\mathbf{else}:\\
\;\;\;\;t_0\\
\end{array}
\]
| Alternative 8 |
|---|
| Error | 21.7 |
|---|
| Cost | 13388 |
|---|
\[\begin{array}{l}
t_0 := \cos \varepsilon - \cos x\\
\mathbf{if}\;\varepsilon \leq -0.00026:\\
\;\;\;\;t_0\\
\mathbf{elif}\;\varepsilon \leq -4.7 \cdot 10^{-123}:\\
\;\;\;\;-0.5 \cdot \left(\varepsilon \cdot \varepsilon\right)\\
\mathbf{elif}\;\varepsilon \leq 7.5 \cdot 10^{-7}:\\
\;\;\;\;\sin x \cdot \left(-\varepsilon\right)\\
\mathbf{else}:\\
\;\;\;\;t_0\\
\end{array}
\]
| Alternative 9 |
|---|
| Error | 22.1 |
|---|
| Cost | 7052 |
|---|
\[\begin{array}{l}
t_0 := \cos \varepsilon + -1\\
\mathbf{if}\;\varepsilon \leq -0.000102:\\
\;\;\;\;t_0\\
\mathbf{elif}\;\varepsilon \leq -5.2 \cdot 10^{-123}:\\
\;\;\;\;-0.5 \cdot \left(\varepsilon \cdot \varepsilon\right)\\
\mathbf{elif}\;\varepsilon \leq 2.5 \cdot 10^{-8}:\\
\;\;\;\;\sin x \cdot \left(-\varepsilon\right)\\
\mathbf{else}:\\
\;\;\;\;t_0\\
\end{array}
\]
| Alternative 10 |
|---|
| Error | 33.8 |
|---|
| Cost | 6988 |
|---|
\[\begin{array}{l}
t_0 := \cos \varepsilon + -1\\
\mathbf{if}\;\varepsilon \leq -0.000102:\\
\;\;\;\;t_0\\
\mathbf{elif}\;\varepsilon \leq -1.12 \cdot 10^{-126}:\\
\;\;\;\;-0.5 \cdot \left(\varepsilon \cdot \varepsilon\right)\\
\mathbf{elif}\;\varepsilon \leq 3.7 \cdot 10^{-11}:\\
\;\;\;\;x \cdot \left(-\varepsilon\right)\\
\mathbf{else}:\\
\;\;\;\;t_0\\
\end{array}
\]
| Alternative 11 |
|---|
| Error | 48.7 |
|---|
| Cost | 452 |
|---|
\[\begin{array}{l}
\mathbf{if}\;x \leq 5.5 \cdot 10^{-125}:\\
\;\;\;\;-0.5 \cdot \left(\varepsilon \cdot \varepsilon\right)\\
\mathbf{else}:\\
\;\;\;\;x \cdot \left(-\varepsilon\right)\\
\end{array}
\]
| Alternative 12 |
|---|
| Error | 52.0 |
|---|
| Cost | 256 |
|---|
\[x \cdot \left(-\varepsilon\right)
\]
| Alternative 13 |
|---|
| Error | 55.5 |
|---|
| Cost | 64 |
|---|
\[0
\]