Average Error: 15.1 → 0.3
Time: 26.6s
Precision: 64
\[\frac{r \cdot \sin b}{\cos \left(a + b\right)}\]
\[\frac{r \cdot \sin b}{\mathsf{fma}\left(\left(\cos a\right), \left(\cos b\right), \left(\left(-\sin b\right) \cdot \sin a\right)\right)}\]
\frac{r \cdot \sin b}{\cos \left(a + b\right)}
\frac{r \cdot \sin b}{\mathsf{fma}\left(\left(\cos a\right), \left(\cos b\right), \left(\left(-\sin b\right) \cdot \sin a\right)\right)}
double f(double r, double a, double b) {
        double r981467 = r;
        double r981468 = b;
        double r981469 = sin(r981468);
        double r981470 = r981467 * r981469;
        double r981471 = a;
        double r981472 = r981471 + r981468;
        double r981473 = cos(r981472);
        double r981474 = r981470 / r981473;
        return r981474;
}

double f(double r, double a, double b) {
        double r981475 = r;
        double r981476 = b;
        double r981477 = sin(r981476);
        double r981478 = r981475 * r981477;
        double r981479 = a;
        double r981480 = cos(r981479);
        double r981481 = cos(r981476);
        double r981482 = -r981477;
        double r981483 = sin(r981479);
        double r981484 = r981482 * r981483;
        double r981485 = fma(r981480, r981481, r981484);
        double r981486 = r981478 / r981485;
        return r981486;
}

Error

Bits error versus r

Bits error versus a

Bits error versus b

Derivation

  1. Initial program 15.1

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

    \[\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(\left(\cos a\right), \left(\cos b\right), \left(-\sin a \cdot \sin b\right)\right)}}\]
  6. Final simplification0.3

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

Reproduce

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