x + \left(\tan \left(y + z\right) - \tan a\right)
x + \left(\frac{\sin y}{\cos y \cdot \left(1 - \frac{\sin z}{\cos y} \cdot \frac{\sin y}{\cos z}\right)} - \left(\frac{\sin a}{\cos a} - \frac{\frac{\sin z}{\cos z}}{1 - \frac{\sin z}{\cos y} \cdot \frac{\sin y}{\cos z}}\right)\right)double f(double x, double y, double z, double a) {
double r98764 = x;
double r98765 = y;
double r98766 = z;
double r98767 = r98765 + r98766;
double r98768 = tan(r98767);
double r98769 = a;
double r98770 = tan(r98769);
double r98771 = r98768 - r98770;
double r98772 = r98764 + r98771;
return r98772;
}
double f(double x, double y, double z, double a) {
double r98773 = x;
double r98774 = y;
double r98775 = sin(r98774);
double r98776 = cos(r98774);
double r98777 = 1.0;
double r98778 = z;
double r98779 = sin(r98778);
double r98780 = r98779 / r98776;
double r98781 = cos(r98778);
double r98782 = r98775 / r98781;
double r98783 = r98780 * r98782;
double r98784 = r98777 - r98783;
double r98785 = r98776 * r98784;
double r98786 = r98775 / r98785;
double r98787 = a;
double r98788 = sin(r98787);
double r98789 = cos(r98787);
double r98790 = r98788 / r98789;
double r98791 = r98779 / r98781;
double r98792 = r98791 / r98784;
double r98793 = r98790 - r98792;
double r98794 = r98786 - r98793;
double r98795 = r98773 + r98794;
return r98795;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus a
Results
Initial program 13.2
rmApplied tan-sum0.2
Simplified0.2
Taylor expanded around inf 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019195
(FPCore (x y z a)
:name "(+ x (- (tan (+ y z)) (tan a)))"
:pre (and (or (== x 0.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))))