x + \left(\tan \left(y + z\right) - \tan a\right)
\mathsf{fma}\left(\frac{\tan y + \tan z}{1 - \left(\tan y \cdot \tan y\right) \cdot \left(\tan z \cdot \tan z\right)}, \mathsf{fma}\left(\tan y, \tan z, 1\right), \left(-\tan a\right) + x\right) + \mathsf{fma}\left(-\tan a, 1, \tan a \cdot 1\right)double f(double x, double y, double z, double a) {
double r210146 = x;
double r210147 = y;
double r210148 = z;
double r210149 = r210147 + r210148;
double r210150 = tan(r210149);
double r210151 = a;
double r210152 = tan(r210151);
double r210153 = r210150 - r210152;
double r210154 = r210146 + r210153;
return r210154;
}
double f(double x, double y, double z, double a) {
double r210155 = y;
double r210156 = tan(r210155);
double r210157 = z;
double r210158 = tan(r210157);
double r210159 = r210156 + r210158;
double r210160 = 1.0;
double r210161 = r210156 * r210156;
double r210162 = r210158 * r210158;
double r210163 = r210161 * r210162;
double r210164 = r210160 - r210163;
double r210165 = r210159 / r210164;
double r210166 = fma(r210156, r210158, r210160);
double r210167 = a;
double r210168 = tan(r210167);
double r210169 = -r210168;
double r210170 = x;
double r210171 = r210169 + r210170;
double r210172 = fma(r210165, r210166, r210171);
double r210173 = r210168 * r210160;
double r210174 = fma(r210169, r210160, r210173);
double r210175 = r210172 + r210174;
return r210175;
}



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 *-un-lft-identity0.2
Applied flip--0.2
Applied associate-/r/0.2
Applied prod-diff0.2
Applied associate-+r+0.2
Simplified0.2
rmApplied swap-sqr0.2
Final simplification0.2
herbie shell --seed 2020035 +o rules:numerics
(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))))