x + \left(\tan \left(y + z\right) - \tan a\right)
x + \frac{\left(\tan y + \tan z\right) \cdot \cos a - \left(1 - \tan y \cdot \tan z\right) \cdot \sin a}{\left(1 - \frac{\sin y \cdot \tan z}{\cos y}\right) \cdot \cos a}double f(double x, double y, double z, double a) {
double r119361 = x;
double r119362 = y;
double r119363 = z;
double r119364 = r119362 + r119363;
double r119365 = tan(r119364);
double r119366 = a;
double r119367 = tan(r119366);
double r119368 = r119365 - r119367;
double r119369 = r119361 + r119368;
return r119369;
}
double f(double x, double y, double z, double a) {
double r119370 = x;
double r119371 = y;
double r119372 = tan(r119371);
double r119373 = z;
double r119374 = tan(r119373);
double r119375 = r119372 + r119374;
double r119376 = a;
double r119377 = cos(r119376);
double r119378 = r119375 * r119377;
double r119379 = 1.0;
double r119380 = r119372 * r119374;
double r119381 = r119379 - r119380;
double r119382 = sin(r119376);
double r119383 = r119381 * r119382;
double r119384 = r119378 - r119383;
double r119385 = sin(r119371);
double r119386 = r119385 * r119374;
double r119387 = cos(r119371);
double r119388 = r119386 / r119387;
double r119389 = r119379 - r119388;
double r119390 = r119389 * r119377;
double r119391 = r119384 / r119390;
double r119392 = r119370 + r119391;
return r119392;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus a
Results
Initial program 13.0
rmApplied tan-quot13.0
Applied tan-sum0.2
Applied frac-sub0.2
rmApplied tan-quot0.2
Applied associate-*l/0.2
Final simplification0.2
herbie shell --seed 2020060
(FPCore (x y z a)
:name "(+ x (- (tan (+ y z)) (tan a)))"
:precision binary64
:pre (and (or (== x 0.0) (<= 0.5884142 x 505.5909)) (or (<= -1.796658e+308 y -9.425585e-310) (<= 1.284938e-309 y 1.7512240000000001e+308)) (or (<= -1.7767070000000002e+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.7512240000000001e+308)))
(+ x (- (tan (+ y z)) (tan a))))