\tan \left(x + \varepsilon\right) - \tan x
\left(\frac{\sin x}{\left(1 - \left(\frac{\sin \varepsilon}{\cos x} \cdot \frac{\sin \varepsilon}{\cos x}\right) \cdot \left(\frac{\sin x}{\cos \varepsilon} \cdot \frac{\sin x}{\cos \varepsilon}\right)\right) \cdot \cos x} - \frac{\sin x}{\cos x}\right) + \left(\left(\frac{\sin \varepsilon}{\cos x} \cdot \frac{\sin \varepsilon}{\cos \varepsilon \cdot \cos \varepsilon}\right) \cdot \frac{\sin x}{1 - \left(\frac{\sin \varepsilon}{\cos x} \cdot \frac{\sin \varepsilon}{\cos x}\right) \cdot \left(\frac{\sin x}{\cos \varepsilon} \cdot \frac{\sin x}{\cos \varepsilon}\right)} + \frac{\sin \varepsilon}{\left(1 - \left(\frac{\sin \varepsilon}{\cos x} \cdot \frac{\sin \varepsilon}{\cos x}\right) \cdot \left(\frac{\sin x}{\cos \varepsilon} \cdot \frac{\sin x}{\cos \varepsilon}\right)\right) \cdot \cos \varepsilon} \cdot \left(\frac{\sin x}{\cos x} \cdot \frac{\sin x}{\cos x} + 1\right)\right)double f(double x, double eps) {
double r6502077 = x;
double r6502078 = eps;
double r6502079 = r6502077 + r6502078;
double r6502080 = tan(r6502079);
double r6502081 = tan(r6502077);
double r6502082 = r6502080 - r6502081;
return r6502082;
}
double f(double x, double eps) {
double r6502083 = x;
double r6502084 = sin(r6502083);
double r6502085 = 1.0;
double r6502086 = eps;
double r6502087 = sin(r6502086);
double r6502088 = cos(r6502083);
double r6502089 = r6502087 / r6502088;
double r6502090 = r6502089 * r6502089;
double r6502091 = cos(r6502086);
double r6502092 = r6502084 / r6502091;
double r6502093 = r6502092 * r6502092;
double r6502094 = r6502090 * r6502093;
double r6502095 = r6502085 - r6502094;
double r6502096 = r6502095 * r6502088;
double r6502097 = r6502084 / r6502096;
double r6502098 = r6502084 / r6502088;
double r6502099 = r6502097 - r6502098;
double r6502100 = r6502091 * r6502091;
double r6502101 = r6502087 / r6502100;
double r6502102 = r6502089 * r6502101;
double r6502103 = r6502084 / r6502095;
double r6502104 = r6502102 * r6502103;
double r6502105 = r6502095 * r6502091;
double r6502106 = r6502087 / r6502105;
double r6502107 = r6502098 * r6502098;
double r6502108 = r6502107 + r6502085;
double r6502109 = r6502106 * r6502108;
double r6502110 = r6502104 + r6502109;
double r6502111 = r6502099 + r6502110;
return r6502111;
}




Bits error versus x




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