x + \left(\tan \left(y + z\right) - \tan a\right)
x + \frac{\left(\tan y + \tan z\right) \cdot \cos a - \left(1 - \tan y \cdot \tan z\right) \cdot \sin a}{\left(1 - \left(\tan y \cdot \tan z\right) \cdot \left(\tan y \cdot \tan z\right)\right) \cdot \cos a} \cdot \left(1 + \tan z \cdot \tan y\right)double f(double x, double y, double z, double a) {
double r172659 = x;
double r172660 = y;
double r172661 = z;
double r172662 = r172660 + r172661;
double r172663 = tan(r172662);
double r172664 = a;
double r172665 = tan(r172664);
double r172666 = r172663 - r172665;
double r172667 = r172659 + r172666;
return r172667;
}
double f(double x, double y, double z, double a) {
double r172668 = x;
double r172669 = y;
double r172670 = tan(r172669);
double r172671 = z;
double r172672 = tan(r172671);
double r172673 = r172670 + r172672;
double r172674 = a;
double r172675 = cos(r172674);
double r172676 = r172673 * r172675;
double r172677 = 1.0;
double r172678 = r172670 * r172672;
double r172679 = r172677 - r172678;
double r172680 = sin(r172674);
double r172681 = r172679 * r172680;
double r172682 = r172676 - r172681;
double r172683 = r172678 * r172678;
double r172684 = r172677 - r172683;
double r172685 = r172684 * r172675;
double r172686 = r172682 / r172685;
double r172687 = r172672 * r172670;
double r172688 = r172677 + r172687;
double r172689 = r172686 * r172688;
double r172690 = r172668 + r172689;
return r172690;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus a
Results
Initial program 13.3
rmApplied tan-quot13.3
Applied tan-sum0.2
Applied frac-sub0.2
rmApplied flip--0.2
Applied associate-*l/0.2
Applied associate-/r/0.2
rmApplied *-commutative0.2
Final simplification0.2
herbie shell --seed 2019352
(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))))