x + \left(\tan \left(y + z\right) - \tan a\right)
x + \sqrt[3]{{\left(\frac{\left(\tan y + \tan z\right) \cdot \cos a - \left(1 - \tan y \cdot \tan z\right) \cdot \sin a}{\left(1 - \frac{\tan y \cdot \sin z}{\cos z}\right) \cdot \cos a}\right)}^{3}}double f(double x, double y, double z, double a) {
double r129718 = x;
double r129719 = y;
double r129720 = z;
double r129721 = r129719 + r129720;
double r129722 = tan(r129721);
double r129723 = a;
double r129724 = tan(r129723);
double r129725 = r129722 - r129724;
double r129726 = r129718 + r129725;
return r129726;
}
double f(double x, double y, double z, double a) {
double r129727 = x;
double r129728 = y;
double r129729 = tan(r129728);
double r129730 = z;
double r129731 = tan(r129730);
double r129732 = r129729 + r129731;
double r129733 = a;
double r129734 = cos(r129733);
double r129735 = r129732 * r129734;
double r129736 = 1.0;
double r129737 = r129729 * r129731;
double r129738 = r129736 - r129737;
double r129739 = sin(r129733);
double r129740 = r129738 * r129739;
double r129741 = r129735 - r129740;
double r129742 = sin(r129730);
double r129743 = r129729 * r129742;
double r129744 = cos(r129730);
double r129745 = r129743 / r129744;
double r129746 = r129736 - r129745;
double r129747 = r129746 * r129734;
double r129748 = r129741 / r129747;
double r129749 = 3.0;
double r129750 = pow(r129748, r129749);
double r129751 = cbrt(r129750);
double r129752 = r129727 + r129751;
return r129752;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus a
Results
Initial program 13.2
rmApplied tan-quot13.3
Applied tan-sum0.2
Applied frac-sub0.2
rmApplied tan-quot0.2
Applied associate-*r/0.2
rmApplied add-cbrt-cube0.3
Applied add-cbrt-cube0.3
Applied cbrt-unprod0.3
Applied add-cbrt-cube0.3
Applied cbrt-undiv0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2020065
(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))))