\sin \left(x + \varepsilon\right) - \sin x
2 \cdot \left(\left(\cos x \cdot \cos \left(\varepsilon \cdot \frac{1}{2}\right) - \sqrt[3]{\left(\sin x \cdot \sin \left(\varepsilon \cdot \frac{1}{2}\right)\right) \cdot \left(\left(\sin x \cdot \sin \left(\varepsilon \cdot \frac{1}{2}\right)\right) \cdot \left(\sin x \cdot \sin \left(\varepsilon \cdot \frac{1}{2}\right)\right)\right)}\right) \cdot \sin \left(\varepsilon \cdot \frac{1}{2}\right)\right)double f(double x, double eps) {
double r3058114 = x;
double r3058115 = eps;
double r3058116 = r3058114 + r3058115;
double r3058117 = sin(r3058116);
double r3058118 = sin(r3058114);
double r3058119 = r3058117 - r3058118;
return r3058119;
}
double f(double x, double eps) {
double r3058120 = 2.0;
double r3058121 = x;
double r3058122 = cos(r3058121);
double r3058123 = eps;
double r3058124 = 0.5;
double r3058125 = r3058123 * r3058124;
double r3058126 = cos(r3058125);
double r3058127 = r3058122 * r3058126;
double r3058128 = sin(r3058121);
double r3058129 = sin(r3058125);
double r3058130 = r3058128 * r3058129;
double r3058131 = r3058130 * r3058130;
double r3058132 = r3058130 * r3058131;
double r3058133 = cbrt(r3058132);
double r3058134 = r3058127 - r3058133;
double r3058135 = r3058134 * r3058129;
double r3058136 = r3058120 * r3058135;
return r3058136;
}




Bits error versus x




Bits error versus eps
Results
| Original | 37.0 |
|---|---|
| Target | 15.0 |
| Herbie | 0.4 |
Initial program 37.0
rmApplied diff-sin37.3
Simplified15.0
Taylor expanded around -inf 15.0
Simplified15.0
rmApplied fma-udef15.0
Applied cos-sum0.3
rmApplied add-cbrt-cube0.4
Final simplification0.4
herbie shell --seed 2019144 +o rules:numerics
(FPCore (x eps)
:name "2sin (example 3.3)"
:herbie-target
(* 2 (* (cos (+ x (/ eps 2))) (sin (/ eps 2))))
(- (sin (+ x eps)) (sin x)))