x + \left(\tan \left(y + z\right) - \tan a\right)
x + \left(\frac{\sqrt[3]{{\left(\tan y + \tan z\right)}^{3}}}{1 - \tan y \cdot \tan z} - \tan a\right)double f(double x, double y, double z, double a) {
double r123917 = x;
double r123918 = y;
double r123919 = z;
double r123920 = r123918 + r123919;
double r123921 = tan(r123920);
double r123922 = a;
double r123923 = tan(r123922);
double r123924 = r123921 - r123923;
double r123925 = r123917 + r123924;
return r123925;
}
double f(double x, double y, double z, double a) {
double r123926 = x;
double r123927 = y;
double r123928 = tan(r123927);
double r123929 = z;
double r123930 = tan(r123929);
double r123931 = r123928 + r123930;
double r123932 = 3.0;
double r123933 = pow(r123931, r123932);
double r123934 = cbrt(r123933);
double r123935 = 1.0;
double r123936 = r123928 * r123930;
double r123937 = r123935 - r123936;
double r123938 = r123934 / r123937;
double r123939 = a;
double r123940 = tan(r123939);
double r123941 = r123938 - r123940;
double r123942 = r123926 + r123941;
return r123942;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus a
Results
Initial program 13.5
rmApplied tan-sum0.2
rmApplied add-cbrt-cube0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019235 +o rules:numerics
(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))))