Average Error: 15.3 → 0.4
Time: 20.1s
Precision: 64
\[\frac{r \cdot \sin b}{\cos \left(a + b\right)}\]
\[\frac{r}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{log1p}\left(\mathsf{expm1}\left(\left(-\sin b\right) \cdot \sin a\right)\right)\right)} \cdot \sin b\]
\frac{r \cdot \sin b}{\cos \left(a + b\right)}
\frac{r}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{log1p}\left(\mathsf{expm1}\left(\left(-\sin b\right) \cdot \sin a\right)\right)\right)} \cdot \sin b
double f(double r, double a, double b) {
        double r28455 = r;
        double r28456 = b;
        double r28457 = sin(r28456);
        double r28458 = r28455 * r28457;
        double r28459 = a;
        double r28460 = r28459 + r28456;
        double r28461 = cos(r28460);
        double r28462 = r28458 / r28461;
        return r28462;
}

double f(double r, double a, double b) {
        double r28463 = r;
        double r28464 = b;
        double r28465 = cos(r28464);
        double r28466 = a;
        double r28467 = cos(r28466);
        double r28468 = sin(r28464);
        double r28469 = -r28468;
        double r28470 = sin(r28466);
        double r28471 = r28469 * r28470;
        double r28472 = expm1(r28471);
        double r28473 = log1p(r28472);
        double r28474 = fma(r28465, r28467, r28473);
        double r28475 = r28463 / r28474;
        double r28476 = r28475 * r28468;
        return r28476;
}

Error

Bits error versus r

Bits error versus a

Bits error versus b

Derivation

  1. Initial program 15.3

    \[\frac{r \cdot \sin b}{\cos \left(a + b\right)}\]
  2. Simplified15.3

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

    \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos b \cdot \cos a - \sin b \cdot \sin a}}\]
  5. Simplified0.3

    \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos a \cdot \cos b} - \sin b \cdot \sin a}\]
  6. Taylor expanded around inf 0.3

    \[\leadsto \color{blue}{\frac{\sin b \cdot r}{\cos a \cdot \cos b - \sin b \cdot \sin a}}\]
  7. Simplified0.3

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

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

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

Reproduce

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