x + \left(\tan \left(y + z\right) - \tan a\right)
x + \left(\frac{\tan y + \tan z}{1 - \log \left(e^{\frac{\sin y \cdot \sin z}{\cos y \cdot \cos z}}\right)} - \tan a\right)double f(double x, double y, double z, double a) {
double r143397 = x;
double r143398 = y;
double r143399 = z;
double r143400 = r143398 + r143399;
double r143401 = tan(r143400);
double r143402 = a;
double r143403 = tan(r143402);
double r143404 = r143401 - r143403;
double r143405 = r143397 + r143404;
return r143405;
}
double f(double x, double y, double z, double a) {
double r143406 = x;
double r143407 = y;
double r143408 = tan(r143407);
double r143409 = z;
double r143410 = tan(r143409);
double r143411 = r143408 + r143410;
double r143412 = 1.0;
double r143413 = sin(r143407);
double r143414 = sin(r143409);
double r143415 = r143413 * r143414;
double r143416 = cos(r143407);
double r143417 = cos(r143409);
double r143418 = r143416 * r143417;
double r143419 = r143415 / r143418;
double r143420 = exp(r143419);
double r143421 = log(r143420);
double r143422 = r143412 - r143421;
double r143423 = r143411 / r143422;
double r143424 = a;
double r143425 = tan(r143424);
double r143426 = r143423 - r143425;
double r143427 = r143406 + r143426;
return r143427;
}



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
rmApplied tan-quot0.2
Applied tan-quot0.2
Applied frac-times0.2
rmApplied add-log-exp0.2
Final simplification0.2
herbie shell --seed 2019362
(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))))