x + \left(\tan \left(y + z\right) - \tan a\right)
x + \left(\frac{\sin y \cdot \cos z + \cos y \cdot \sin z}{\mathsf{fma}\left(-\tan y, \tan z, 1\right) \cdot \left(\cos y \cdot \cos z\right)} - \tan a\right)double f(double x, double y, double z, double a) {
double r86691 = x;
double r86692 = y;
double r86693 = z;
double r86694 = r86692 + r86693;
double r86695 = tan(r86694);
double r86696 = a;
double r86697 = tan(r86696);
double r86698 = r86695 - r86697;
double r86699 = r86691 + r86698;
return r86699;
}
double f(double x, double y, double z, double a) {
double r86700 = x;
double r86701 = y;
double r86702 = sin(r86701);
double r86703 = z;
double r86704 = cos(r86703);
double r86705 = r86702 * r86704;
double r86706 = cos(r86701);
double r86707 = sin(r86703);
double r86708 = r86706 * r86707;
double r86709 = r86705 + r86708;
double r86710 = tan(r86701);
double r86711 = -r86710;
double r86712 = tan(r86703);
double r86713 = 1.0;
double r86714 = fma(r86711, r86712, r86713);
double r86715 = r86706 * r86704;
double r86716 = r86714 * r86715;
double r86717 = r86709 / r86716;
double r86718 = a;
double r86719 = tan(r86718);
double r86720 = r86717 - r86719;
double r86721 = r86700 + r86720;
return r86721;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus a
Initial program 13.0
rmApplied tan-sum0.2
rmApplied add-cube-cbrt0.3
Applied add-sqr-sqrt31.5
Applied prod-diff31.5
Simplified0.2
Simplified0.2
rmApplied tan-quot0.2
Applied tan-quot0.2
Applied frac-add0.2
Applied associate-/l/0.2
Final simplification0.2
herbie shell --seed 2019306 +o rules:numerics
(FPCore (x y z a)
:name "(+ x (- (tan (+ y z)) (tan a)))"
:precision binary64
:pre (and (or (== x 0.0) (<= 0.588414199999999998 x 505.590899999999976)) (or (<= -1.79665800000000009e308 y -9.425585000000013e-310) (<= 1.284938e-309 y 1.75122399999999993e308)) (or (<= -1.776707e308 z -8.59979600000002e-310) (<= 3.29314499999998e-311 z 1.72515400000000009e308)) (or (<= -1.79665800000000009e308 a -9.425585000000013e-310) (<= 1.284938e-309 a 1.75122399999999993e308)))
(+ x (- (tan (+ y z)) (tan a))))