\sin \left(x + \varepsilon\right) - \sin x
\left(\left(\cos \left(\frac{1}{2} \cdot \varepsilon\right) \cdot \cos x - \sin \left(\frac{1}{2} \cdot \varepsilon\right) \cdot \sin x\right) \cdot \sin \left(\frac{1}{2} \cdot \varepsilon\right)\right) \cdot 2double f(double x, double eps) {
double r3226192 = x;
double r3226193 = eps;
double r3226194 = r3226192 + r3226193;
double r3226195 = sin(r3226194);
double r3226196 = sin(r3226192);
double r3226197 = r3226195 - r3226196;
return r3226197;
}
double f(double x, double eps) {
double r3226198 = 0.5;
double r3226199 = eps;
double r3226200 = r3226198 * r3226199;
double r3226201 = cos(r3226200);
double r3226202 = x;
double r3226203 = cos(r3226202);
double r3226204 = r3226201 * r3226203;
double r3226205 = sin(r3226200);
double r3226206 = sin(r3226202);
double r3226207 = r3226205 * r3226206;
double r3226208 = r3226204 - r3226207;
double r3226209 = r3226208 * r3226205;
double r3226210 = 2.0;
double r3226211 = r3226209 * r3226210;
return r3226211;
}




Bits error versus x




Bits error versus eps
Results
| Original | 37.2 |
|---|---|
| Target | 14.9 |
| Herbie | 0.3 |
Initial program 37.2
rmApplied diff-sin37.5
Simplified14.9
Taylor expanded around -inf 14.9
Simplified14.9
rmApplied cos-sum0.3
Taylor expanded around -inf 0.3
Final simplification0.3
herbie shell --seed 2019130
(FPCore (x eps)
:name "2sin (example 3.3)"
:herbie-target
(* 2 (* (cos (+ x (/ eps 2))) (sin (/ eps 2))))
(- (sin (+ x eps)) (sin x)))