x + \left(\tan \left(y + z\right) - \tan a\right)
\mathsf{fma}\left(\left(\frac{\tan y + \tan z}{1 - \frac{\left(\sin z \cdot \sin y\right) \cdot \left(\left(\sin z \cdot \sin y\right) \cdot \left(\sin z \cdot \sin y\right)\right)}{\left(\cos z \cdot \cos y\right) \cdot \left(\left(\cos z \cdot \cos y\right) \cdot \left(\cos z \cdot \cos y\right)\right)}}\right), \left(\left(\frac{\sin z \cdot \sin y}{\cos z \cdot \cos y} + \frac{\sin z \cdot \sin y}{\cos z \cdot \cos y} \cdot \frac{\sin z \cdot \sin y}{\cos z \cdot \cos y}\right) + 1\right), \left(-\tan a\right)\right) + xdouble f(double x, double y, double z, double a) {
double r4241530 = x;
double r4241531 = y;
double r4241532 = z;
double r4241533 = r4241531 + r4241532;
double r4241534 = tan(r4241533);
double r4241535 = a;
double r4241536 = tan(r4241535);
double r4241537 = r4241534 - r4241536;
double r4241538 = r4241530 + r4241537;
return r4241538;
}
double f(double x, double y, double z, double a) {
double r4241539 = y;
double r4241540 = tan(r4241539);
double r4241541 = z;
double r4241542 = tan(r4241541);
double r4241543 = r4241540 + r4241542;
double r4241544 = 1.0;
double r4241545 = sin(r4241541);
double r4241546 = sin(r4241539);
double r4241547 = r4241545 * r4241546;
double r4241548 = r4241547 * r4241547;
double r4241549 = r4241547 * r4241548;
double r4241550 = cos(r4241541);
double r4241551 = cos(r4241539);
double r4241552 = r4241550 * r4241551;
double r4241553 = r4241552 * r4241552;
double r4241554 = r4241552 * r4241553;
double r4241555 = r4241549 / r4241554;
double r4241556 = r4241544 - r4241555;
double r4241557 = r4241543 / r4241556;
double r4241558 = r4241547 / r4241552;
double r4241559 = r4241558 * r4241558;
double r4241560 = r4241558 + r4241559;
double r4241561 = r4241560 + r4241544;
double r4241562 = a;
double r4241563 = tan(r4241562);
double r4241564 = -r4241563;
double r4241565 = fma(r4241557, r4241561, r4241564);
double r4241566 = x;
double r4241567 = r4241565 + r4241566;
return r4241567;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus a
Initial program 13.4
rmApplied tan-sum0.2
Taylor expanded around inf 0.2
rmApplied flip3--0.2
Applied associate-/r/0.2
Applied fma-neg0.2
rmApplied add-cbrt-cube0.2
Applied add-cbrt-cube0.2
Applied cbrt-undiv0.2
Applied rem-cube-cbrt0.2
Final simplification0.2
herbie shell --seed 2019133 +o rules:numerics
(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))))