x + \left(\tan \left(y + z\right) - \tan a\right)
x + \left(\frac{\tan y + \tan z}{1 - \frac{\tan y \cdot \sin z}{\cos z}} - \tan a\right)double f(double x, double y, double z, double a) {
double r140919 = x;
double r140920 = y;
double r140921 = z;
double r140922 = r140920 + r140921;
double r140923 = tan(r140922);
double r140924 = a;
double r140925 = tan(r140924);
double r140926 = r140923 - r140925;
double r140927 = r140919 + r140926;
return r140927;
}
double f(double x, double y, double z, double a) {
double r140928 = x;
double r140929 = y;
double r140930 = tan(r140929);
double r140931 = z;
double r140932 = tan(r140931);
double r140933 = r140930 + r140932;
double r140934 = 1.0;
double r140935 = sin(r140931);
double r140936 = r140930 * r140935;
double r140937 = cos(r140931);
double r140938 = r140936 / r140937;
double r140939 = r140934 - r140938;
double r140940 = r140933 / r140939;
double r140941 = a;
double r140942 = tan(r140941);
double r140943 = r140940 - r140942;
double r140944 = r140928 + r140943;
return r140944;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus a
Results
Initial program 13.2
rmApplied tan-sum0.2
rmApplied tan-quot0.2
Applied associate-*r/0.2
Final simplification0.2
herbie shell --seed 2020100
(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))))