x + \left(\tan \left(y + z\right) - \tan a\right)
x + \frac{\left(\tan y + \tan z\right) \cdot \cos a - \left(1 - \frac{\sin y \cdot \sin z}{\cos z \cdot \cos y}\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 r210527 = x;
double r210528 = y;
double r210529 = z;
double r210530 = r210528 + r210529;
double r210531 = tan(r210530);
double r210532 = a;
double r210533 = tan(r210532);
double r210534 = r210531 - r210533;
double r210535 = r210527 + r210534;
return r210535;
}
double f(double x, double y, double z, double a) {
double r210536 = x;
double r210537 = y;
double r210538 = tan(r210537);
double r210539 = z;
double r210540 = tan(r210539);
double r210541 = r210538 + r210540;
double r210542 = a;
double r210543 = cos(r210542);
double r210544 = r210541 * r210543;
double r210545 = 1.0;
double r210546 = sin(r210537);
double r210547 = sin(r210539);
double r210548 = r210546 * r210547;
double r210549 = cos(r210539);
double r210550 = cos(r210537);
double r210551 = r210549 * r210550;
double r210552 = r210548 / r210551;
double r210553 = r210545 - r210552;
double r210554 = sin(r210542);
double r210555 = r210553 * r210554;
double r210556 = r210544 - r210555;
double r210557 = r210546 * r210540;
double r210558 = r210557 / r210550;
double r210559 = r210545 - r210558;
double r210560 = r210559 * r210543;
double r210561 = r210556 / r210560;
double r210562 = r210536 + r210561;
return r210562;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus a
Results
Initial program 13.2
rmApplied tan-quot13.2
Applied tan-sum0.2
Applied frac-sub0.2
rmApplied tan-quot0.2
Applied associate-*l/0.2
Taylor expanded around inf 0.2
Final simplification0.2
herbie shell --seed 2019322
(FPCore (x y z a)
:name "(+ x (- (tan (+ y z)) (tan a)))"
:precision binary64
:pre (and (or (== x 0.0) (<= 0.588414199999999998 x 505.590899999999976)) (or (<= -1.79665800000000009e308 y -9.425585000000013e-310) (<= 1.284938e-309 y 1.75122399999999993e308)) (or (<= -1.776707e308 z -8.59979600000002e-310) (<= 3.29314499999998e-311 z 1.72515400000000009e308)) (or (<= -1.79665800000000009e308 a -9.425585000000013e-310) (<= 1.284938e-309 a 1.75122399999999993e308)))
(+ x (- (tan (+ y z)) (tan a))))