x + \left(\tan \left(y + z\right) - \tan a\right)
\left(\frac{\tan y + \tan z}{1 - \tan z \cdot \tan y} - \tan a\right) + xdouble f(double x, double y, double z, double a) {
double r3726191 = x;
double r3726192 = y;
double r3726193 = z;
double r3726194 = r3726192 + r3726193;
double r3726195 = tan(r3726194);
double r3726196 = a;
double r3726197 = tan(r3726196);
double r3726198 = r3726195 - r3726197;
double r3726199 = r3726191 + r3726198;
return r3726199;
}
double f(double x, double y, double z, double a) {
double r3726200 = y;
double r3726201 = tan(r3726200);
double r3726202 = z;
double r3726203 = tan(r3726202);
double r3726204 = r3726201 + r3726203;
double r3726205 = 1.0;
double r3726206 = r3726203 * r3726201;
double r3726207 = r3726205 - r3726206;
double r3726208 = r3726204 / r3726207;
double r3726209 = a;
double r3726210 = tan(r3726209);
double r3726211 = r3726208 - r3726210;
double r3726212 = x;
double r3726213 = r3726211 + r3726212;
return r3726213;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus a
Results
Initial program 13.0
rmApplied tan-sum0.2
Final simplification0.2
herbie shell --seed 2019132 +o rules:numerics
(FPCore (x y z a)
:name "(+ x (- (tan (+ y z)) (tan a)))"
:pre (and (or (== x 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))))