x + \left(\tan \left(y + z\right) - \tan a\right)
0 \cdot \tan a + \left((\left(\frac{\tan y + \tan z}{1 - \sqrt[3]{{\left(\tan z \cdot \tan y\right)}^{3} \cdot \left({\left(\tan z \cdot \tan y\right)}^{3} \cdot {\left(\tan z \cdot \tan y\right)}^{3}\right)}}\right) \cdot \left(\left(\left(\tan z \cdot \tan y\right) \cdot \left(\tan z \cdot \tan y\right) + \tan z \cdot \tan y\right) + 1\right) + \left(-\tan a\right))_* + x\right)double f(double x, double y, double z, double a) {
double r27025234 = x;
double r27025235 = y;
double r27025236 = z;
double r27025237 = r27025235 + r27025236;
double r27025238 = tan(r27025237);
double r27025239 = a;
double r27025240 = tan(r27025239);
double r27025241 = r27025238 - r27025240;
double r27025242 = r27025234 + r27025241;
return r27025242;
}
double f(double x, double y, double z, double a) {
double r27025243 = 0.0;
double r27025244 = a;
double r27025245 = tan(r27025244);
double r27025246 = r27025243 * r27025245;
double r27025247 = y;
double r27025248 = tan(r27025247);
double r27025249 = z;
double r27025250 = tan(r27025249);
double r27025251 = r27025248 + r27025250;
double r27025252 = 1.0;
double r27025253 = r27025250 * r27025248;
double r27025254 = 3.0;
double r27025255 = pow(r27025253, r27025254);
double r27025256 = r27025255 * r27025255;
double r27025257 = r27025255 * r27025256;
double r27025258 = cbrt(r27025257);
double r27025259 = r27025252 - r27025258;
double r27025260 = r27025251 / r27025259;
double r27025261 = r27025253 * r27025253;
double r27025262 = r27025261 + r27025253;
double r27025263 = r27025262 + r27025252;
double r27025264 = -r27025245;
double r27025265 = fma(r27025260, r27025263, r27025264);
double r27025266 = x;
double r27025267 = r27025265 + r27025266;
double r27025268 = r27025246 + r27025267;
return r27025268;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus a
Initial program 13.2
rmApplied tan-sum0.2
rmApplied *-un-lft-identity0.2
Applied flip3--0.2
Applied associate-/r/0.2
Applied prod-diff0.2
Applied associate-+r+0.2
Simplified0.2
rmApplied add-cbrt-cube0.2
Final simplification0.2
herbie shell --seed 2019119 +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))))