x + \left(\tan \left(y + z\right) - \tan a\right)
x + \sqrt[3]{{\left(\frac{\tan y + \tan z}{1 - \tan y \cdot \tan z} - \tan a\right)}^{3}}double f(double x, double y, double z, double a) {
double r144378 = x;
double r144379 = y;
double r144380 = z;
double r144381 = r144379 + r144380;
double r144382 = tan(r144381);
double r144383 = a;
double r144384 = tan(r144383);
double r144385 = r144382 - r144384;
double r144386 = r144378 + r144385;
return r144386;
}
double f(double x, double y, double z, double a) {
double r144387 = x;
double r144388 = y;
double r144389 = tan(r144388);
double r144390 = z;
double r144391 = tan(r144390);
double r144392 = r144389 + r144391;
double r144393 = 1.0;
double r144394 = r144389 * r144391;
double r144395 = r144393 - r144394;
double r144396 = r144392 / r144395;
double r144397 = a;
double r144398 = tan(r144397);
double r144399 = r144396 - r144398;
double r144400 = 3.0;
double r144401 = pow(r144399, r144400);
double r144402 = cbrt(r144401);
double r144403 = r144387 + r144402;
return r144403;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus a
Results
Initial program 13.4
rmApplied tan-sum0.2
rmApplied add-cbrt-cube0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2020047
(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))))