Average Error: 15.1 → 0.3
Time: 22.2s
Precision: 64
\[r \cdot \frac{\sin b}{\cos \left(a + b\right)}\]
\[\frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, -\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}{\mathsf{fma}\left(\cos a, \cos b, -\mathsf{log1p}\left(\mathsf{expm1}\left(\sin a \cdot \sin b\right)\right)\right)}
double f(double r, double a, double b) {
        double r1071732 = r;
        double r1071733 = b;
        double r1071734 = sin(r1071733);
        double r1071735 = a;
        double r1071736 = r1071735 + r1071733;
        double r1071737 = cos(r1071736);
        double r1071738 = r1071734 / r1071737;
        double r1071739 = r1071732 * r1071738;
        return r1071739;
}

double f(double r, double a, double b) {
        double r1071740 = r;
        double r1071741 = b;
        double r1071742 = sin(r1071741);
        double r1071743 = r1071740 * r1071742;
        double r1071744 = a;
        double r1071745 = cos(r1071744);
        double r1071746 = cos(r1071741);
        double r1071747 = sin(r1071744);
        double r1071748 = r1071747 * r1071742;
        double r1071749 = expm1(r1071748);
        double r1071750 = log1p(r1071749);
        double r1071751 = -r1071750;
        double r1071752 = fma(r1071745, r1071746, r1071751);
        double r1071753 = r1071743 / r1071752;
        return r1071753;
}

Error

Bits error versus r

Bits error versus a

Bits error versus b

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 fma-neg0.3

    \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\mathsf{fma}\left(\cos a, \cos b, -\sin a \cdot \sin b\right)}}\]
  6. Using strategy rm
  7. Applied associate-*r/0.3

    \[\leadsto \color{blue}{\frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, -\sin a \cdot \sin b\right)}}\]
  8. Using strategy rm
  9. Applied log1p-expm1-u0.3

    \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, -\color{blue}{\mathsf{log1p}\left(\mathsf{expm1}\left(\sin a \cdot \sin b\right)\right)}\right)}\]
  10. Final simplification0.3

    \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, -\mathsf{log1p}\left(\mathsf{expm1}\left(\sin a \cdot \sin b\right)\right)\right)}\]

Reproduce

herbie shell --seed 2019172 +o rules:numerics
(FPCore (r a b)
  :name "r*sin(b)/cos(a+b), B"
  (* r (/ (sin b) (cos (+ a b)))))