x + \left(\tan \left(y + z\right) - \tan a\right)
x - \left(\left(\tan a - \frac{\left(\tan y + \tan z\right) \cdot \mathsf{fma}\left(\tan z, \tan y, 1\right)}{1 - \tan z \cdot \left(\sqrt[3]{{\left(\tan y \cdot \tan y\right)}^{3}} \cdot \tan z\right)}\right) + \left(\mathsf{fma}\left(\tan z, \tan y, 1\right) + \left(-1 - \tan y \cdot \tan z\right)\right) \cdot \frac{\tan y + \tan z}{1 - \tan z \cdot \left(\left(\tan y \cdot \tan y\right) \cdot \tan z\right)}\right)double f(double x, double y, double z, double a) {
double r121770 = x;
double r121771 = y;
double r121772 = z;
double r121773 = r121771 + r121772;
double r121774 = tan(r121773);
double r121775 = a;
double r121776 = tan(r121775);
double r121777 = r121774 - r121776;
double r121778 = r121770 + r121777;
return r121778;
}
double f(double x, double y, double z, double a) {
double r121779 = x;
double r121780 = a;
double r121781 = tan(r121780);
double r121782 = y;
double r121783 = tan(r121782);
double r121784 = z;
double r121785 = tan(r121784);
double r121786 = r121783 + r121785;
double r121787 = 1.0;
double r121788 = fma(r121785, r121783, r121787);
double r121789 = r121786 * r121788;
double r121790 = r121783 * r121783;
double r121791 = 3.0;
double r121792 = pow(r121790, r121791);
double r121793 = cbrt(r121792);
double r121794 = r121793 * r121785;
double r121795 = r121785 * r121794;
double r121796 = r121787 - r121795;
double r121797 = r121789 / r121796;
double r121798 = r121781 - r121797;
double r121799 = -1.0;
double r121800 = r121783 * r121785;
double r121801 = r121799 - r121800;
double r121802 = r121788 + r121801;
double r121803 = r121790 * r121785;
double r121804 = r121785 * r121803;
double r121805 = r121787 - r121804;
double r121806 = r121786 / r121805;
double r121807 = r121802 * r121806;
double r121808 = r121798 + r121807;
double r121809 = r121779 - r121808;
return r121809;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus a
Initial program 13.1
Simplified13.1
rmApplied tan-sum0.2
Simplified0.2
Simplified0.2
rmApplied flip--0.2
Applied associate-/r/0.2
Applied add-sqr-sqrt32.5
Applied prod-diff32.5
Simplified0.2
Simplified0.2
rmApplied add-cbrt-cube0.2
Applied add-cbrt-cube0.2
Applied cbrt-unprod0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019194 +o rules:numerics
(FPCore (x y z a)
:name "(+ x (- (tan (+ y z)) (tan a)))"
: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))))