x + \left(\tan \left(y + z\right) - \tan a\right)
\left(\left(\tan y \cdot \tan z + 1\right) \cdot \frac{\tan z + \tan y}{1 - \frac{\left(\tan y \cdot \tan z\right) \cdot \left(\sin z \cdot \sin y\right)}{\cos z \cdot \cos y}} - \tan a\right) + xdouble f(double x, double y, double z, double a) {
double r6170271 = x;
double r6170272 = y;
double r6170273 = z;
double r6170274 = r6170272 + r6170273;
double r6170275 = tan(r6170274);
double r6170276 = a;
double r6170277 = tan(r6170276);
double r6170278 = r6170275 - r6170277;
double r6170279 = r6170271 + r6170278;
return r6170279;
}
double f(double x, double y, double z, double a) {
double r6170280 = y;
double r6170281 = tan(r6170280);
double r6170282 = z;
double r6170283 = tan(r6170282);
double r6170284 = r6170281 * r6170283;
double r6170285 = 1.0;
double r6170286 = r6170284 + r6170285;
double r6170287 = r6170283 + r6170281;
double r6170288 = sin(r6170282);
double r6170289 = sin(r6170280);
double r6170290 = r6170288 * r6170289;
double r6170291 = r6170284 * r6170290;
double r6170292 = cos(r6170282);
double r6170293 = cos(r6170280);
double r6170294 = r6170292 * r6170293;
double r6170295 = r6170291 / r6170294;
double r6170296 = r6170285 - r6170295;
double r6170297 = r6170287 / r6170296;
double r6170298 = r6170286 * r6170297;
double r6170299 = a;
double r6170300 = tan(r6170299);
double r6170301 = r6170298 - r6170300;
double r6170302 = x;
double r6170303 = r6170301 + r6170302;
return r6170303;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus a
Results
Initial program 13.1
rmApplied tan-sum0.2
rmApplied flip--0.2
Applied associate-/r/0.2
Simplified0.2
rmApplied tan-quot0.2
Applied tan-quot0.2
Applied frac-times0.2
Applied associate-*r/0.2
Final simplification0.2
herbie shell --seed 2019142
(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))))