x + \left(\tan \left(y + z\right) - \tan a\right)
x + \frac{\left(\tan y + \tan z\right) \cdot \cos a - \left(1 - \tan y \cdot \tan z\right) \cdot \sin a}{\left(1 - \sqrt[3]{{\left(\tan y \cdot \tan z\right)}^{3}}\right) \cdot \cos a}double f(double x, double y, double z, double a) {
double r168937 = x;
double r168938 = y;
double r168939 = z;
double r168940 = r168938 + r168939;
double r168941 = tan(r168940);
double r168942 = a;
double r168943 = tan(r168942);
double r168944 = r168941 - r168943;
double r168945 = r168937 + r168944;
return r168945;
}
double f(double x, double y, double z, double a) {
double r168946 = x;
double r168947 = y;
double r168948 = tan(r168947);
double r168949 = z;
double r168950 = tan(r168949);
double r168951 = r168948 + r168950;
double r168952 = a;
double r168953 = cos(r168952);
double r168954 = r168951 * r168953;
double r168955 = 1.0;
double r168956 = r168948 * r168950;
double r168957 = r168955 - r168956;
double r168958 = sin(r168952);
double r168959 = r168957 * r168958;
double r168960 = r168954 - r168959;
double r168961 = 3.0;
double r168962 = pow(r168956, r168961);
double r168963 = cbrt(r168962);
double r168964 = r168955 - r168963;
double r168965 = r168964 * r168953;
double r168966 = r168960 / r168965;
double r168967 = r168946 + r168966;
return r168967;
}



Bits error versus x



Bits error versus y



Bits error versus z



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