x + \left(\tan \left(y + z\right) - \tan a\right)
x + \left(\left(\mathsf{fma}\left(\frac{\tan z + \tan y}{1 - \frac{\sin y}{\frac{\cos y}{\tan z}} \cdot \left(\frac{\sin y}{\frac{\cos y}{\tan z}} \cdot \frac{\sin y}{\frac{\cos y}{\tan z}}\right)}, \mathsf{fma}\left(\frac{\sin y}{\frac{\cos y}{\tan z}}, \frac{\sin y}{\frac{\cos y}{\tan z}}, \frac{\sin y}{\frac{\cos y}{\tan z}}\right), \frac{\tan z + \tan y}{1 - \left(\frac{\sin y}{\frac{\cos y}{\tan z}} \cdot \frac{\sin y}{\frac{\cos y}{\tan z}}\right) \cdot \left(\frac{1}{\sqrt[3]{\frac{\cos y}{\tan z}} \cdot \sqrt[3]{\frac{\cos y}{\tan z}}} \cdot \frac{\sin y}{\sqrt[3]{\frac{\cos y}{\tan z}}}\right)}\right) - \tan a\right) + \mathsf{fma}\left(\tan a, -1, \tan a\right)\right)double f(double x, double y, double z, double a) {
double r5161748 = x;
double r5161749 = y;
double r5161750 = z;
double r5161751 = r5161749 + r5161750;
double r5161752 = tan(r5161751);
double r5161753 = a;
double r5161754 = tan(r5161753);
double r5161755 = r5161752 - r5161754;
double r5161756 = r5161748 + r5161755;
return r5161756;
}
double f(double x, double y, double z, double a) {
double r5161757 = x;
double r5161758 = z;
double r5161759 = tan(r5161758);
double r5161760 = y;
double r5161761 = tan(r5161760);
double r5161762 = r5161759 + r5161761;
double r5161763 = 1.0;
double r5161764 = sin(r5161760);
double r5161765 = cos(r5161760);
double r5161766 = r5161765 / r5161759;
double r5161767 = r5161764 / r5161766;
double r5161768 = r5161767 * r5161767;
double r5161769 = r5161767 * r5161768;
double r5161770 = r5161763 - r5161769;
double r5161771 = r5161762 / r5161770;
double r5161772 = fma(r5161767, r5161767, r5161767);
double r5161773 = cbrt(r5161766);
double r5161774 = r5161773 * r5161773;
double r5161775 = r5161763 / r5161774;
double r5161776 = r5161764 / r5161773;
double r5161777 = r5161775 * r5161776;
double r5161778 = r5161768 * r5161777;
double r5161779 = r5161763 - r5161778;
double r5161780 = r5161762 / r5161779;
double r5161781 = fma(r5161771, r5161772, r5161780);
double r5161782 = a;
double r5161783 = tan(r5161782);
double r5161784 = r5161781 - r5161783;
double r5161785 = -1.0;
double r5161786 = fma(r5161783, r5161785, r5161783);
double r5161787 = r5161784 + r5161786;
double r5161788 = r5161757 + r5161787;
return r5161788;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus a
Initial program 13.1
rmApplied tan-sum0.2
rmApplied tan-quot0.2
Applied associate-*l/0.2
rmApplied add-cube-cbrt0.3
Applied flip3--0.3
Applied associate-/r/0.3
Applied prod-diff0.3
Simplified0.2
Simplified0.2
rmApplied add-cube-cbrt0.2
Applied *-un-lft-identity0.2
Applied times-frac0.2
Final simplification0.2
herbie shell --seed 2019164 +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))))