Average Error: 15.2 → 0.3
Time: 6.6s
Precision: 64
\[\frac{r \cdot \sin b}{\cos \left(a + b\right)}\]
\[r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, -\mathsf{expm1}\left(\mathsf{log1p}\left(\sin a \cdot \sin b\right)\right)\right)}\]
\frac{r \cdot \sin b}{\cos \left(a + b\right)}
r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, -\mathsf{expm1}\left(\mathsf{log1p}\left(\sin a \cdot \sin b\right)\right)\right)}
double f(double r, double a, double b) {
        double r17499 = r;
        double r17500 = b;
        double r17501 = sin(r17500);
        double r17502 = r17499 * r17501;
        double r17503 = a;
        double r17504 = r17503 + r17500;
        double r17505 = cos(r17504);
        double r17506 = r17502 / r17505;
        return r17506;
}

double f(double r, double a, double b) {
        double r17507 = r;
        double r17508 = b;
        double r17509 = sin(r17508);
        double r17510 = cos(r17508);
        double r17511 = a;
        double r17512 = cos(r17511);
        double r17513 = sin(r17511);
        double r17514 = r17513 * r17509;
        double r17515 = log1p(r17514);
        double r17516 = expm1(r17515);
        double r17517 = -r17516;
        double r17518 = fma(r17510, r17512, r17517);
        double r17519 = r17509 / r17518;
        double r17520 = r17507 * r17519;
        return r17520;
}

Error

Bits error versus r

Bits error versus a

Bits error versus b

Derivation

  1. Initial program 15.2

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

    \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos a \cdot \cos b - \sin a \cdot \sin b}}\]
  4. Using strategy rm
  5. Applied *-un-lft-identity0.3

    \[\leadsto \frac{r \cdot \sin b}{\color{blue}{1 \cdot \left(\cos a \cdot \cos b - \sin a \cdot \sin b\right)}}\]
  6. Applied times-frac0.3

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

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

    \[\leadsto r \cdot \color{blue}{\frac{\sin b}{\cos b \cdot \cos a - \sin a \cdot \sin b}}\]
  9. Using strategy rm
  10. Applied fma-neg0.3

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

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

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

Reproduce

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