x + \left(\tan \left(y + z\right) - \tan a\right)
x + \frac{\left(\left(\tan y \cdot \tan y - \tan z \cdot \tan z\right) \cdot \cos a\right) \cdot \frac{1}{\tan y - \tan z} - \left(1 - \tan y \cdot \tan z\right) \cdot \sin a}{\left(1 - \tan y \cdot \tan z\right) \cdot \cos a}double f(double x, double y, double z, double a) {
double r115129 = x;
double r115130 = y;
double r115131 = z;
double r115132 = r115130 + r115131;
double r115133 = tan(r115132);
double r115134 = a;
double r115135 = tan(r115134);
double r115136 = r115133 - r115135;
double r115137 = r115129 + r115136;
return r115137;
}
double f(double x, double y, double z, double a) {
double r115138 = x;
double r115139 = y;
double r115140 = tan(r115139);
double r115141 = r115140 * r115140;
double r115142 = z;
double r115143 = tan(r115142);
double r115144 = r115143 * r115143;
double r115145 = r115141 - r115144;
double r115146 = a;
double r115147 = cos(r115146);
double r115148 = r115145 * r115147;
double r115149 = 1.0;
double r115150 = r115140 - r115143;
double r115151 = r115149 / r115150;
double r115152 = r115148 * r115151;
double r115153 = r115140 * r115143;
double r115154 = r115149 - r115153;
double r115155 = sin(r115146);
double r115156 = r115154 * r115155;
double r115157 = r115152 - r115156;
double r115158 = r115154 * r115147;
double r115159 = r115157 / r115158;
double r115160 = r115138 + r115159;
return r115160;
}



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 tan-sum0.2
Applied frac-sub0.2
rmApplied flip-+0.2
Applied associate-*l/0.2
rmApplied div-inv0.3
Final simplification0.3
herbie shell --seed 2019303
(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))))