Average Error: 15.5 → 0.4
Time: 6.6s
Precision: 64
\[\frac{r \cdot \sin b}{\cos \left(a + b\right)}\]
\[\left(r \cdot \sin b\right) \cdot \frac{1}{\mathsf{fma}\left(\cos a, \cos b, -\sin a \cdot \sin b\right)}\]
\frac{r \cdot \sin b}{\cos \left(a + b\right)}
\left(r \cdot \sin b\right) \cdot \frac{1}{\mathsf{fma}\left(\cos a, \cos b, -\sin a \cdot \sin b\right)}
double f(double r, double a, double b) {
        double r17514 = r;
        double r17515 = b;
        double r17516 = sin(r17515);
        double r17517 = r17514 * r17516;
        double r17518 = a;
        double r17519 = r17518 + r17515;
        double r17520 = cos(r17519);
        double r17521 = r17517 / r17520;
        return r17521;
}

double f(double r, double a, double b) {
        double r17522 = r;
        double r17523 = b;
        double r17524 = sin(r17523);
        double r17525 = r17522 * r17524;
        double r17526 = 1.0;
        double r17527 = a;
        double r17528 = cos(r17527);
        double r17529 = cos(r17523);
        double r17530 = sin(r17527);
        double r17531 = r17530 * r17524;
        double r17532 = -r17531;
        double r17533 = fma(r17528, r17529, r17532);
        double r17534 = r17526 / r17533;
        double r17535 = r17525 * r17534;
        return r17535;
}

Error

Bits error versus r

Bits error versus a

Bits error versus b

Derivation

  1. Initial program 15.5

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

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

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

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

Reproduce

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