x + \left(\tan \left(y + z\right) - \tan a\right)
\left(x + \left(\frac{\sin y}{\left(1 - \frac{\sin y \cdot \sin z}{\cos z \cdot \cos y}\right) \cdot \cos y} + \frac{\sin z}{\left(1 - \frac{\sin y \cdot \sin z}{\cos z \cdot \cos y}\right) \cdot \cos z}\right)\right) - \frac{\sin a}{\cos a}double f(double x, double y, double z, double a) {
double r124827 = x;
double r124828 = y;
double r124829 = z;
double r124830 = r124828 + r124829;
double r124831 = tan(r124830);
double r124832 = a;
double r124833 = tan(r124832);
double r124834 = r124831 - r124833;
double r124835 = r124827 + r124834;
return r124835;
}
double f(double x, double y, double z, double a) {
double r124836 = x;
double r124837 = y;
double r124838 = sin(r124837);
double r124839 = 1.0;
double r124840 = z;
double r124841 = sin(r124840);
double r124842 = r124838 * r124841;
double r124843 = cos(r124840);
double r124844 = cos(r124837);
double r124845 = r124843 * r124844;
double r124846 = r124842 / r124845;
double r124847 = r124839 - r124846;
double r124848 = r124847 * r124844;
double r124849 = r124838 / r124848;
double r124850 = r124847 * r124843;
double r124851 = r124841 / r124850;
double r124852 = r124849 + r124851;
double r124853 = r124836 + r124852;
double r124854 = a;
double r124855 = sin(r124854);
double r124856 = cos(r124854);
double r124857 = r124855 / r124856;
double r124858 = r124853 - r124857;
return r124858;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus a
Results
Initial program 13.1
rmApplied tan-sum0.2
rmApplied sub-neg0.2
Applied associate-+r+0.2
rmApplied flip-+0.4
Simplified0.4
Simplified0.4
Taylor expanded around inf 0.3
Final simplification0.3
herbie shell --seed 2020045
(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))))