x + \left(\tan \left(y + z\right) - \tan a\right)
x + \frac{\cos a \cdot \left(\tan z + \tan y\right) - \left(1 - \tan y \cdot \tan z\right) \cdot \sin a}{\left(1 - \frac{\sqrt[3]{\left(\sin y \cdot \tan z\right) \cdot \left(\left(\sin y \cdot \tan z\right) \cdot \left(\tan y \cdot \tan z\right)\right)}}{\sqrt[3]{\cos y \cdot \cos y}}\right) \cdot \cos a}double f(double x, double y, double z, double a) {
double r11779640 = x;
double r11779641 = y;
double r11779642 = z;
double r11779643 = r11779641 + r11779642;
double r11779644 = tan(r11779643);
double r11779645 = a;
double r11779646 = tan(r11779645);
double r11779647 = r11779644 - r11779646;
double r11779648 = r11779640 + r11779647;
return r11779648;
}
double f(double x, double y, double z, double a) {
double r11779649 = x;
double r11779650 = a;
double r11779651 = cos(r11779650);
double r11779652 = z;
double r11779653 = tan(r11779652);
double r11779654 = y;
double r11779655 = tan(r11779654);
double r11779656 = r11779653 + r11779655;
double r11779657 = r11779651 * r11779656;
double r11779658 = 1.0;
double r11779659 = r11779655 * r11779653;
double r11779660 = r11779658 - r11779659;
double r11779661 = sin(r11779650);
double r11779662 = r11779660 * r11779661;
double r11779663 = r11779657 - r11779662;
double r11779664 = sin(r11779654);
double r11779665 = r11779664 * r11779653;
double r11779666 = r11779665 * r11779659;
double r11779667 = r11779665 * r11779666;
double r11779668 = cbrt(r11779667);
double r11779669 = cos(r11779654);
double r11779670 = r11779669 * r11779669;
double r11779671 = cbrt(r11779670);
double r11779672 = r11779668 / r11779671;
double r11779673 = r11779658 - r11779672;
double r11779674 = r11779673 * r11779651;
double r11779675 = r11779663 / r11779674;
double r11779676 = r11779649 + r11779675;
return r11779676;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus a
Results
Initial program 13.2
rmApplied tan-quot13.2
Applied +-commutative13.2
Applied tan-sum0.2
Applied frac-sub0.2
rmApplied add-cbrt-cube0.2
rmApplied tan-quot0.2
Applied associate-*r/0.2
Applied tan-quot0.2
Applied associate-*r/0.2
Applied associate-*l/0.2
Applied frac-times0.2
Applied cbrt-div0.2
Final simplification0.2
herbie shell --seed 2019158
(FPCore (x y z a)
:name "(+ x (- (tan (+ y z)) (tan a)))"
:pre (and (or (== x 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))))