Average Error: 15.1 → 0.4
Time: 7.1s
Precision: 64
\[r \cdot \frac{\sin b}{\cos \left(a + b\right)}\]
\[\frac{r}{1 \cdot \mathsf{fma}\left(\frac{\cos a}{\sin b}, \cos b, -\sin a\right)}\]
r \cdot \frac{\sin b}{\cos \left(a + b\right)}
\frac{r}{1 \cdot \mathsf{fma}\left(\frac{\cos a}{\sin b}, \cos b, -\sin a\right)}
double f(double r, double a, double b) {
        double r18395 = r;
        double r18396 = b;
        double r18397 = sin(r18396);
        double r18398 = a;
        double r18399 = r18398 + r18396;
        double r18400 = cos(r18399);
        double r18401 = r18397 / r18400;
        double r18402 = r18395 * r18401;
        return r18402;
}

double f(double r, double a, double b) {
        double r18403 = r;
        double r18404 = 1.0;
        double r18405 = a;
        double r18406 = cos(r18405);
        double r18407 = b;
        double r18408 = sin(r18407);
        double r18409 = r18406 / r18408;
        double r18410 = cos(r18407);
        double r18411 = sin(r18405);
        double r18412 = -r18411;
        double r18413 = fma(r18409, r18410, r18412);
        double r18414 = r18404 * r18413;
        double r18415 = r18403 / r18414;
        return r18415;
}

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 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 associate-/l*0.4

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

    \[\leadsto \frac{r}{\frac{\cos a \cdot \cos b - \sin a \cdot \sin b}{\color{blue}{1 \cdot \sin b}}}\]
  10. Applied *-un-lft-identity0.4

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

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

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

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

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

Reproduce

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