\tan \left(x + \varepsilon\right) - \tan x
\left(\frac{\frac{\sin x}{\cos x}}{1 - \frac{\left(\sin x \cdot \sin \varepsilon\right) \cdot \left(\sin x \cdot \sin \varepsilon\right)}{\left(\cos \varepsilon \cdot \cos x\right) \cdot \left(\cos \varepsilon \cdot \cos x\right)}} - \frac{\sin x}{\cos x}\right) + \left(\left(\frac{\sin x}{\cos x} \cdot \frac{\frac{\sin \varepsilon}{\cos \varepsilon} \cdot \frac{\sin \varepsilon}{\cos \varepsilon}}{1 - \frac{\left(\sin x \cdot \sin \varepsilon\right) \cdot \left(\sin x \cdot \sin \varepsilon\right)}{\left(\cos \varepsilon \cdot \cos x\right) \cdot \left(\cos \varepsilon \cdot \cos x\right)}} + \frac{\frac{\sin \varepsilon}{\cos \varepsilon}}{1 - \frac{\left(\sin x \cdot \sin \varepsilon\right) \cdot \left(\sin x \cdot \sin \varepsilon\right)}{\left(\cos \varepsilon \cdot \cos x\right) \cdot \left(\cos \varepsilon \cdot \cos x\right)}} \cdot \left(\frac{\sin x}{\cos x} \cdot \frac{\sin x}{\cos x}\right)\right) + \frac{\frac{\sin \varepsilon}{\cos \varepsilon}}{1 - \frac{\left(\sin x \cdot \sin \varepsilon\right) \cdot \left(\sin x \cdot \sin \varepsilon\right)}{\left(\cos \varepsilon \cdot \cos x\right) \cdot \left(\cos \varepsilon \cdot \cos x\right)}}\right)double f(double x, double eps) {
double r3434898 = x;
double r3434899 = eps;
double r3434900 = r3434898 + r3434899;
double r3434901 = tan(r3434900);
double r3434902 = tan(r3434898);
double r3434903 = r3434901 - r3434902;
return r3434903;
}
double f(double x, double eps) {
double r3434904 = x;
double r3434905 = sin(r3434904);
double r3434906 = cos(r3434904);
double r3434907 = r3434905 / r3434906;
double r3434908 = 1.0;
double r3434909 = eps;
double r3434910 = sin(r3434909);
double r3434911 = r3434905 * r3434910;
double r3434912 = r3434911 * r3434911;
double r3434913 = cos(r3434909);
double r3434914 = r3434913 * r3434906;
double r3434915 = r3434914 * r3434914;
double r3434916 = r3434912 / r3434915;
double r3434917 = r3434908 - r3434916;
double r3434918 = r3434907 / r3434917;
double r3434919 = r3434918 - r3434907;
double r3434920 = r3434910 / r3434913;
double r3434921 = r3434920 * r3434920;
double r3434922 = r3434921 / r3434917;
double r3434923 = r3434907 * r3434922;
double r3434924 = r3434920 / r3434917;
double r3434925 = r3434907 * r3434907;
double r3434926 = r3434924 * r3434925;
double r3434927 = r3434923 + r3434926;
double r3434928 = r3434927 + r3434924;
double r3434929 = r3434919 + r3434928;
return r3434929;
}




Bits error versus x




Bits error versus eps
Results
| Original | 37.1 |
|---|---|
| Target | 15.3 |
| Herbie | 0.6 |
Initial program 37.1
rmApplied tan-sum21.7
rmApplied flip--21.8
Applied associate-/r/21.8
rmApplied tan-quot21.8
Applied associate-*l/21.8
Applied associate-*r/21.8
Taylor expanded around -inf 21.9
Simplified0.6
Final simplification0.6
herbie shell --seed 2019141
(FPCore (x eps)
:name "2tan (problem 3.3.2)"
:herbie-target
(/ (sin eps) (* (cos x) (cos (+ x eps))))
(- (tan (+ x eps)) (tan x)))