\tan \left(x + \varepsilon\right) - \tan x
\frac{\frac{\sin \varepsilon}{\cos \varepsilon} \cdot \left(\frac{{\left(\sin x\right)}^{2}}{\cos x} + \cos x\right)}{\left(1 - \tan x \cdot \tan \varepsilon\right) \cdot \cos x}double f(double x, double eps) {
double r118083 = x;
double r118084 = eps;
double r118085 = r118083 + r118084;
double r118086 = tan(r118085);
double r118087 = tan(r118083);
double r118088 = r118086 - r118087;
return r118088;
}
double f(double x, double eps) {
double r118089 = eps;
double r118090 = sin(r118089);
double r118091 = cos(r118089);
double r118092 = r118090 / r118091;
double r118093 = x;
double r118094 = sin(r118093);
double r118095 = 2.0;
double r118096 = pow(r118094, r118095);
double r118097 = cos(r118093);
double r118098 = r118096 / r118097;
double r118099 = r118098 + r118097;
double r118100 = r118092 * r118099;
double r118101 = 1.0;
double r118102 = tan(r118093);
double r118103 = tan(r118089);
double r118104 = r118102 * r118103;
double r118105 = r118101 - r118104;
double r118106 = r118105 * r118097;
double r118107 = r118100 / r118106;
return r118107;
}




Bits error versus x




Bits error versus eps
Results
| Original | 37.1 |
|---|---|
| Target | 15.0 |
| Herbie | 0.4 |
Initial program 37.1
rmApplied tan-quot37.0
Applied tan-sum22.1
Applied frac-sub22.1
Simplified22.1
Taylor expanded around inf 0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2019303 +o rules:numerics
(FPCore (x eps)
:name "2tan (problem 3.3.2)"
:precision binary64
:herbie-target
(/ (sin eps) (* (cos x) (cos (+ x eps))))
(- (tan (+ x eps)) (tan x)))