x + \left(\tan \left(y + z\right) - \tan a\right)
x - \left(\tan a - \frac{\tan z + \tan y}{1 - \frac{\frac{\sin z \cdot \sin y}{\cos y}}{\cos z}}\right)double f(double x, double y, double z, double a) {
double r117032 = x;
double r117033 = y;
double r117034 = z;
double r117035 = r117033 + r117034;
double r117036 = tan(r117035);
double r117037 = a;
double r117038 = tan(r117037);
double r117039 = r117036 - r117038;
double r117040 = r117032 + r117039;
return r117040;
}
double f(double x, double y, double z, double a) {
double r117041 = x;
double r117042 = a;
double r117043 = tan(r117042);
double r117044 = z;
double r117045 = tan(r117044);
double r117046 = y;
double r117047 = tan(r117046);
double r117048 = r117045 + r117047;
double r117049 = 1.0;
double r117050 = sin(r117044);
double r117051 = sin(r117046);
double r117052 = r117050 * r117051;
double r117053 = cos(r117046);
double r117054 = r117052 / r117053;
double r117055 = cos(r117044);
double r117056 = r117054 / r117055;
double r117057 = r117049 - r117056;
double r117058 = r117048 / r117057;
double r117059 = r117043 - r117058;
double r117060 = r117041 - r117059;
return r117060;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus a
Results
Initial program 13.1
Simplified13.1
rmApplied tan-sum0.2
Simplified0.2
Taylor expanded around inf 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019174
(FPCore (x y z a)
:name "(+ x (- (tan (+ y z)) (tan a)))"
:pre (and (or (== x 0.0) (<= 0.5884142 x 505.5909)) (or (<= -1.796658e+308 y -9.425585e-310) (<= 1.284938e-309 y 1.751224e+308)) (or (<= -1.776707e+308 z -8.599796e-310) (<= 3.293145e-311 z 1.725154e+308)) (or (<= -1.796658e+308 a -9.425585e-310) (<= 1.284938e-309 a 1.751224e+308)))
(+ x (- (tan (+ y z)) (tan a))))