x + \left(\tan \left(y + z\right) - \tan a\right)
\frac{\left(\left(\tan y + \tan z\right) \cdot \cos a - \left(1 - \tan y \cdot \tan z\right) \cdot \sin a\right) \cdot \left(\left(1 + \frac{\sin y \cdot \tan z}{\cos y} \cdot \frac{\sin y \cdot \tan z}{\cos y}\right) + \frac{\sin y \cdot \tan z}{\cos y}\right)}{\left({1}^{3} - \frac{{\left(\sin y\right)}^{3}}{{\left(\cos y\right)}^{2}} \cdot \frac{{\left(\tan z\right)}^{3}}{\cos y}\right) \cdot \cos a} + xdouble f(double x, double y, double z, double a) {
double r152133 = x;
double r152134 = y;
double r152135 = z;
double r152136 = r152134 + r152135;
double r152137 = tan(r152136);
double r152138 = a;
double r152139 = tan(r152138);
double r152140 = r152137 - r152139;
double r152141 = r152133 + r152140;
return r152141;
}
double f(double x, double y, double z, double a) {
double r152142 = y;
double r152143 = tan(r152142);
double r152144 = z;
double r152145 = tan(r152144);
double r152146 = r152143 + r152145;
double r152147 = a;
double r152148 = cos(r152147);
double r152149 = r152146 * r152148;
double r152150 = 1.0;
double r152151 = r152143 * r152145;
double r152152 = r152150 - r152151;
double r152153 = sin(r152147);
double r152154 = r152152 * r152153;
double r152155 = r152149 - r152154;
double r152156 = sin(r152142);
double r152157 = r152156 * r152145;
double r152158 = cos(r152142);
double r152159 = r152157 / r152158;
double r152160 = r152159 * r152159;
double r152161 = r152150 + r152160;
double r152162 = r152161 + r152159;
double r152163 = r152155 * r152162;
double r152164 = 3.0;
double r152165 = pow(r152150, r152164);
double r152166 = pow(r152156, r152164);
double r152167 = 2.0;
double r152168 = pow(r152158, r152167);
double r152169 = r152166 / r152168;
double r152170 = pow(r152145, r152164);
double r152171 = r152170 / r152158;
double r152172 = r152169 * r152171;
double r152173 = r152165 - r152172;
double r152174 = r152173 * r152148;
double r152175 = r152163 / r152174;
double r152176 = x;
double r152177 = r152175 + r152176;
return r152177;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus a
Results
Initial program 13.4
rmApplied tan-quot13.4
Applied tan-sum0.2
Applied frac-sub0.2
rmApplied tan-quot0.2
Applied associate-*l/0.2
rmApplied flip3--0.2
Applied associate-*l/0.2
Applied associate-/r/0.2
rmApplied add-cube-cbrt0.3
Applied times-frac0.3
Applied unpow-prod-down0.3
Simplified0.3
Simplified0.2
Final simplification0.2
herbie shell --seed 2019304
(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))))