x + \left(\tan \left(y + z\right) - \tan a\right)
x + \left(\frac{\tan z + \tan y}{1 - \left(\sqrt[3]{\tan z} \cdot \sqrt[3]{\tan z}\right) \cdot \left(\sqrt[3]{\tan z} \cdot \tan y\right)} - \tan a\right)double f(double x, double y, double z, double a) {
double r116738 = x;
double r116739 = y;
double r116740 = z;
double r116741 = r116739 + r116740;
double r116742 = tan(r116741);
double r116743 = a;
double r116744 = tan(r116743);
double r116745 = r116742 - r116744;
double r116746 = r116738 + r116745;
return r116746;
}
double f(double x, double y, double z, double a) {
double r116747 = x;
double r116748 = z;
double r116749 = tan(r116748);
double r116750 = y;
double r116751 = tan(r116750);
double r116752 = r116749 + r116751;
double r116753 = 1.0;
double r116754 = cbrt(r116749);
double r116755 = r116754 * r116754;
double r116756 = r116754 * r116751;
double r116757 = r116755 * r116756;
double r116758 = r116753 - r116757;
double r116759 = r116752 / r116758;
double r116760 = a;
double r116761 = tan(r116760);
double r116762 = r116759 - r116761;
double r116763 = r116747 + r116762;
return r116763;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus a
Results
Initial program 13.0
rmApplied tan-sum0.2
Simplified0.2
Simplified0.2
rmApplied add-cube-cbrt0.3
Applied associate-*l*0.3
Final simplification0.3
herbie shell --seed 2019306
(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))))