r \cdot \frac{\sin b}{\cos \left(a + b\right)}\frac{r \cdot \sin b}{\cos a \cdot \cos b - \log \left(e^{\mathsf{log1p}\left(\mathsf{expm1}\left(\sin a \cdot \sin b\right)\right)}\right)}double f(double r, double a, double b) {
double r17045 = r;
double r17046 = b;
double r17047 = sin(r17046);
double r17048 = a;
double r17049 = r17048 + r17046;
double r17050 = cos(r17049);
double r17051 = r17047 / r17050;
double r17052 = r17045 * r17051;
return r17052;
}
double f(double r, double a, double b) {
double r17053 = r;
double r17054 = b;
double r17055 = sin(r17054);
double r17056 = r17053 * r17055;
double r17057 = a;
double r17058 = cos(r17057);
double r17059 = cos(r17054);
double r17060 = r17058 * r17059;
double r17061 = sin(r17057);
double r17062 = r17061 * r17055;
double r17063 = expm1(r17062);
double r17064 = log1p(r17063);
double r17065 = exp(r17064);
double r17066 = log(r17065);
double r17067 = r17060 - r17066;
double r17068 = r17056 / r17067;
return r17068;
}



Bits error versus r



Bits error versus a



Bits error versus b
Results
Initial program 15.1
rmApplied cos-sum0.3
rmApplied associate-*r/0.3
rmApplied add-log-exp0.4
rmApplied log1p-expm1-u0.4
Final simplification0.4
herbie shell --seed 2020003 +o rules:numerics
(FPCore (r a b)
:name "r*sin(b)/cos(a+b), B"
:precision binary64
(* r (/ (sin b) (cos (+ a b)))))