x + \left(\tan \left(y + z\right) - \tan a\right)
x - \left(\left(\tan a - \frac{\left(\tan y + \tan z\right) \cdot \mathsf{fma}\left(\tan z, \tan y, 1\right)}{1 - \tan z \cdot \left(\sqrt[3]{{\left(\tan y \cdot \tan y\right)}^{3}} \cdot \tan z\right)}\right) + \left(\mathsf{fma}\left(\tan z, \tan y, 1\right) + \left(-1 - \tan y \cdot \tan z\right)\right) \cdot \frac{\tan y + \tan z}{1 - \tan z \cdot \left(\left(\tan y \cdot \tan y\right) \cdot \tan z\right)}\right)double f(double x, double y, double z, double a) {
double r148657 = x;
double r148658 = y;
double r148659 = z;
double r148660 = r148658 + r148659;
double r148661 = tan(r148660);
double r148662 = a;
double r148663 = tan(r148662);
double r148664 = r148661 - r148663;
double r148665 = r148657 + r148664;
return r148665;
}
double f(double x, double y, double z, double a) {
double r148666 = x;
double r148667 = a;
double r148668 = tan(r148667);
double r148669 = y;
double r148670 = tan(r148669);
double r148671 = z;
double r148672 = tan(r148671);
double r148673 = r148670 + r148672;
double r148674 = 1.0;
double r148675 = fma(r148672, r148670, r148674);
double r148676 = r148673 * r148675;
double r148677 = r148670 * r148670;
double r148678 = 3.0;
double r148679 = pow(r148677, r148678);
double r148680 = cbrt(r148679);
double r148681 = r148680 * r148672;
double r148682 = r148672 * r148681;
double r148683 = r148674 - r148682;
double r148684 = r148676 / r148683;
double r148685 = r148668 - r148684;
double r148686 = -1.0;
double r148687 = r148670 * r148672;
double r148688 = r148686 - r148687;
double r148689 = r148675 + r148688;
double r148690 = r148677 * r148672;
double r148691 = r148672 * r148690;
double r148692 = r148674 - r148691;
double r148693 = r148673 / r148692;
double r148694 = r148689 * r148693;
double r148695 = r148685 + r148694;
double r148696 = r148666 - r148695;
return r148696;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus a
Initial program 13.1
Simplified13.1
rmApplied tan-sum0.2
Simplified0.2
Simplified0.2
rmApplied flip--0.2
Applied associate-/r/0.2
Applied add-sqr-sqrt32.5
Applied prod-diff32.5
Simplified0.2
Simplified0.2
rmApplied add-cbrt-cube0.2
Applied add-cbrt-cube0.2
Applied cbrt-unprod0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019194 +o rules:numerics
(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))))