x + \left(\tan \left(y + z\right) - \tan a\right)
\frac{\log \left(e^{\cos a \cdot \left(\tan y + \tan z\right)}\right) - \sin a \cdot \left(1 - \tan z \cdot \tan y\right)}{\left(1 - \frac{\sin z \cdot \tan y}{\cos z}\right) \cdot \cos a} + xdouble f(double x, double y, double z, double a) {
double r5346524 = x;
double r5346525 = y;
double r5346526 = z;
double r5346527 = r5346525 + r5346526;
double r5346528 = tan(r5346527);
double r5346529 = a;
double r5346530 = tan(r5346529);
double r5346531 = r5346528 - r5346530;
double r5346532 = r5346524 + r5346531;
return r5346532;
}
double f(double x, double y, double z, double a) {
double r5346533 = a;
double r5346534 = cos(r5346533);
double r5346535 = y;
double r5346536 = tan(r5346535);
double r5346537 = z;
double r5346538 = tan(r5346537);
double r5346539 = r5346536 + r5346538;
double r5346540 = r5346534 * r5346539;
double r5346541 = exp(r5346540);
double r5346542 = log(r5346541);
double r5346543 = sin(r5346533);
double r5346544 = 1.0;
double r5346545 = r5346538 * r5346536;
double r5346546 = r5346544 - r5346545;
double r5346547 = r5346543 * r5346546;
double r5346548 = r5346542 - r5346547;
double r5346549 = sin(r5346537);
double r5346550 = r5346549 * r5346536;
double r5346551 = cos(r5346537);
double r5346552 = r5346550 / r5346551;
double r5346553 = r5346544 - r5346552;
double r5346554 = r5346553 * r5346534;
double r5346555 = r5346548 / r5346554;
double r5346556 = x;
double r5346557 = r5346555 + r5346556;
return r5346557;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus a
Results
Initial program 13.1
rmApplied tan-quot13.1
Applied tan-sum0.2
Applied frac-sub0.2
rmApplied tan-quot0.2
Applied associate-*r/0.2
rmApplied add-log-exp0.3
Final simplification0.3
herbie shell --seed 2019162 +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))))