\sin \left(x + \varepsilon\right) - \sin x
\left(\left(\cos x \cdot \cos \left(\frac{1}{2} \cdot \varepsilon\right) - \sqrt[3]{\left(\sin x \cdot \sin \left(\frac{1}{2} \cdot \varepsilon\right)\right) \cdot \left(\left(\sin x \cdot \sin \left(\frac{1}{2} \cdot \varepsilon\right)\right) \cdot \left(\sin x \cdot \sin \left(\frac{1}{2} \cdot \varepsilon\right)\right)\right)}\right) \cdot \sin \left(\frac{1}{2} \cdot \varepsilon\right)\right) \cdot 2double f(double x, double eps) {
double r5574446 = x;
double r5574447 = eps;
double r5574448 = r5574446 + r5574447;
double r5574449 = sin(r5574448);
double r5574450 = sin(r5574446);
double r5574451 = r5574449 - r5574450;
return r5574451;
}
double f(double x, double eps) {
double r5574452 = x;
double r5574453 = cos(r5574452);
double r5574454 = 0.5;
double r5574455 = eps;
double r5574456 = r5574454 * r5574455;
double r5574457 = cos(r5574456);
double r5574458 = r5574453 * r5574457;
double r5574459 = sin(r5574452);
double r5574460 = sin(r5574456);
double r5574461 = r5574459 * r5574460;
double r5574462 = r5574461 * r5574461;
double r5574463 = r5574461 * r5574462;
double r5574464 = cbrt(r5574463);
double r5574465 = r5574458 - r5574464;
double r5574466 = r5574465 * r5574460;
double r5574467 = 2.0;
double r5574468 = r5574466 * r5574467;
return r5574468;
}




Bits error versus x




Bits error versus eps
Results
| Original | 36.9 |
|---|---|
| Target | 14.8 |
| Herbie | 0.4 |
Initial program 36.9
rmApplied diff-sin37.2
Simplified14.8
Taylor expanded around -inf 14.8
Simplified14.8
rmApplied cos-sum0.3
rmApplied add-cbrt-cube0.4
Final simplification0.4
herbie shell --seed 2019138
(FPCore (x eps)
:name "2sin (example 3.3)"
:herbie-target
(* 2 (* (cos (+ x (/ eps 2))) (sin (/ eps 2))))
(- (sin (+ x eps)) (sin x)))