Average Error: 14.5 → 0.3
Time: 29.3s
Precision: 64
\[\frac{r \cdot \sin b}{\cos \left(a + b\right)}\]
\[\frac{r \cdot \sin b}{\mathsf{fma}\left(-\mathsf{log1p}\left(\mathsf{expm1}\left(\sin a \cdot \sin b\right)\right), 1, \mathsf{log1p}\left(\mathsf{expm1}\left(\sin a \cdot \sin b\right)\right)\right) + \mathsf{fma}\left(\cos a, \cos b, -\mathsf{log1p}\left(\mathsf{expm1}\left(\sin a \cdot \sin b\right)\right)\right)}\]
\frac{r \cdot \sin b}{\cos \left(a + b\right)}
\frac{r \cdot \sin b}{\mathsf{fma}\left(-\mathsf{log1p}\left(\mathsf{expm1}\left(\sin a \cdot \sin b\right)\right), 1, \mathsf{log1p}\left(\mathsf{expm1}\left(\sin a \cdot \sin b\right)\right)\right) + \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 r1215905 = r;
        double r1215906 = b;
        double r1215907 = sin(r1215906);
        double r1215908 = r1215905 * r1215907;
        double r1215909 = a;
        double r1215910 = r1215909 + r1215906;
        double r1215911 = cos(r1215910);
        double r1215912 = r1215908 / r1215911;
        return r1215912;
}

double f(double r, double a, double b) {
        double r1215913 = r;
        double r1215914 = b;
        double r1215915 = sin(r1215914);
        double r1215916 = r1215913 * r1215915;
        double r1215917 = a;
        double r1215918 = sin(r1215917);
        double r1215919 = r1215918 * r1215915;
        double r1215920 = expm1(r1215919);
        double r1215921 = log1p(r1215920);
        double r1215922 = -r1215921;
        double r1215923 = 1.0;
        double r1215924 = fma(r1215922, r1215923, r1215921);
        double r1215925 = cos(r1215917);
        double r1215926 = cos(r1215914);
        double r1215927 = fma(r1215925, r1215926, r1215922);
        double r1215928 = r1215924 + r1215927;
        double r1215929 = r1215916 / r1215928;
        return r1215929;
}

Error

Bits error versus r

Bits error versus a

Bits error versus b

Derivation

  1. Initial program 14.5

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

    \[\leadsto \frac{r \cdot \sin b}{\cos \color{blue}{\left(b + a\right)}}\]
  4. Applied cos-sum0.3

    \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos b \cdot \cos a - \sin b \cdot \sin a}}\]
  5. Using strategy rm
  6. Applied log1p-expm1-u0.3

    \[\leadsto \frac{r \cdot \sin b}{\cos b \cdot \cos a - \color{blue}{\mathsf{log1p}\left(\mathsf{expm1}\left(\sin b \cdot \sin a\right)\right)}}\]
  7. Using strategy rm
  8. Applied *-un-lft-identity0.3

    \[\leadsto \frac{r \cdot \sin b}{\cos b \cdot \cos a - \color{blue}{1 \cdot \mathsf{log1p}\left(\mathsf{expm1}\left(\sin b \cdot \sin a\right)\right)}}\]
  9. Applied *-commutative0.3

    \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos a \cdot \cos b} - 1 \cdot \mathsf{log1p}\left(\mathsf{expm1}\left(\sin b \cdot \sin a\right)\right)}\]
  10. Applied prod-diff0.3

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

    \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(-\mathsf{log1p}\left(\mathsf{expm1}\left(\sin a \cdot \sin b\right)\right), 1, \mathsf{log1p}\left(\mathsf{expm1}\left(\sin a \cdot \sin b\right)\right)\right) + \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 2019158 +o rules:numerics
(FPCore (r a b)
  :name "r*sin(b)/cos(a+b), A"
  (/ (* r (sin b)) (cos (+ a b))))