\sin \left(x + \varepsilon\right) - \sin x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -5.6103683390120787 \cdot 10^{-05}:\\
\;\;\;\;\left(\sin x \cdot \cos \varepsilon + \cos x \cdot \sin \varepsilon\right) - \sin x\\
\mathbf{elif}\;\varepsilon \le 4.3324917171030357 \cdot 10^{-07}:\\
\;\;\;\;2 \cdot \left(\sin \left(\frac{1}{2} \cdot \varepsilon\right) \cdot \cos \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\cos x \cdot \sin \varepsilon - \sin x\right) + \sin x \cdot \cos \varepsilon\\
\end{array}double f(double x, double eps) {
double r4405135 = x;
double r4405136 = eps;
double r4405137 = r4405135 + r4405136;
double r4405138 = sin(r4405137);
double r4405139 = sin(r4405135);
double r4405140 = r4405138 - r4405139;
return r4405140;
}
double f(double x, double eps) {
double r4405141 = eps;
double r4405142 = -5.6103683390120787e-05;
bool r4405143 = r4405141 <= r4405142;
double r4405144 = x;
double r4405145 = sin(r4405144);
double r4405146 = cos(r4405141);
double r4405147 = r4405145 * r4405146;
double r4405148 = cos(r4405144);
double r4405149 = sin(r4405141);
double r4405150 = r4405148 * r4405149;
double r4405151 = r4405147 + r4405150;
double r4405152 = r4405151 - r4405145;
double r4405153 = 4.3324917171030357e-07;
bool r4405154 = r4405141 <= r4405153;
double r4405155 = 2.0;
double r4405156 = 0.5;
double r4405157 = r4405156 * r4405141;
double r4405158 = sin(r4405157);
double r4405159 = r4405144 + r4405141;
double r4405160 = r4405159 + r4405144;
double r4405161 = r4405160 / r4405155;
double r4405162 = cos(r4405161);
double r4405163 = r4405158 * r4405162;
double r4405164 = r4405155 * r4405163;
double r4405165 = r4405150 - r4405145;
double r4405166 = r4405165 + r4405147;
double r4405167 = r4405154 ? r4405164 : r4405166;
double r4405168 = r4405143 ? r4405152 : r4405167;
return r4405168;
}




Bits error versus x




Bits error versus eps
Results
| Original | 36.1 |
|---|---|
| Target | 14.2 |
| Herbie | 0.4 |
if eps < -5.6103683390120787e-05Initial program 29.2
rmApplied sin-sum0.4
if -5.6103683390120787e-05 < eps < 4.3324917171030357e-07Initial program 43.6
rmApplied diff-sin43.6
Simplified0.4
if 4.3324917171030357e-07 < eps Initial program 28.2
rmApplied sin-sum0.5
Applied associate--l+0.5
Final simplification0.4
herbie shell --seed 2019158
(FPCore (x eps)
:name "2sin (example 3.3)"
:herbie-target
(* 2 (* (cos (+ x (/ eps 2))) (sin (/ eps 2))))
(- (sin (+ x eps)) (sin x)))