Average Error: 15.1 → 0.4
Time: 6.7s
Precision: 64
\[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)}\]
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;
}

Error

Bits error versus r

Bits error versus a

Bits error versus b

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 15.1

    \[r \cdot \frac{\sin b}{\cos \left(a + b\right)}\]
  2. Using strategy rm
  3. Applied cos-sum0.3

    \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a \cdot \cos b - \sin a \cdot \sin b}}\]
  4. Using strategy rm
  5. Applied associate-*r/0.3

    \[\leadsto \color{blue}{\frac{r \cdot \sin b}{\cos a \cdot \cos b - \sin a \cdot \sin b}}\]
  6. Using strategy rm
  7. Applied add-log-exp0.4

    \[\leadsto \frac{r \cdot \sin b}{\cos a \cdot \cos b - \color{blue}{\log \left(e^{\sin a \cdot \sin b}\right)}}\]
  8. Using strategy rm
  9. Applied log1p-expm1-u0.4

    \[\leadsto \frac{r \cdot \sin b}{\cos a \cdot \cos b - \log \left(e^{\color{blue}{\mathsf{log1p}\left(\mathsf{expm1}\left(\sin a \cdot \sin b\right)\right)}}\right)}\]
  10. Final simplification0.4

    \[\leadsto \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)}\]

Reproduce

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)))))