x + \left(\tan \left(y + z\right) - \tan a\right)
x + \left(\frac{\tan z + \tan y}{1 - \frac{\sin y \cdot \sin z}{\cos z \cdot \cos y} \cdot \left(\tan z \cdot \tan y\right)} \cdot \left(1 + \frac{\sin y \cdot \sin z}{\cos z \cdot \cos y}\right) - \tan a\right)double f(double x, double y, double z, double a) {
double r133984 = x;
double r133985 = y;
double r133986 = z;
double r133987 = r133985 + r133986;
double r133988 = tan(r133987);
double r133989 = a;
double r133990 = tan(r133989);
double r133991 = r133988 - r133990;
double r133992 = r133984 + r133991;
return r133992;
}
double f(double x, double y, double z, double a) {
double r133993 = x;
double r133994 = z;
double r133995 = tan(r133994);
double r133996 = y;
double r133997 = tan(r133996);
double r133998 = r133995 + r133997;
double r133999 = 1.0;
double r134000 = sin(r133996);
double r134001 = sin(r133994);
double r134002 = r134000 * r134001;
double r134003 = cos(r133994);
double r134004 = cos(r133996);
double r134005 = r134003 * r134004;
double r134006 = r134002 / r134005;
double r134007 = r133995 * r133997;
double r134008 = r134006 * r134007;
double r134009 = r133999 - r134008;
double r134010 = r133998 / r134009;
double r134011 = r133999 + r134006;
double r134012 = r134010 * r134011;
double r134013 = a;
double r134014 = tan(r134013);
double r134015 = r134012 - r134014;
double r134016 = r133993 + r134015;
return r134016;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus a
Results
Initial program 12.9
rmApplied tan-sum0.2
Simplified0.2
Simplified0.2
rmApplied flip--0.2
Applied associate-/r/0.2
Simplified0.2
rmApplied tan-quot0.2
Applied tan-quot0.2
Applied frac-times0.2
Simplified0.2
Taylor expanded around inf 0.2
Final simplification0.2
herbie shell --seed 2019323
(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.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))))