Average Error: 15.2 → 0.3
Time: 7.6s
Precision: 64
\[r \cdot \frac{\sin b}{\cos \left(a + b\right)}\]
\[r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos a, \cos b, -\sin a \cdot \sin b\right)}\]
r \cdot \frac{\sin b}{\cos \left(a + b\right)}
r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos a, \cos b, -\sin a \cdot \sin b\right)}
double f(double r, double a, double b) {
        double r21460 = r;
        double r21461 = b;
        double r21462 = sin(r21461);
        double r21463 = a;
        double r21464 = r21463 + r21461;
        double r21465 = cos(r21464);
        double r21466 = r21462 / r21465;
        double r21467 = r21460 * r21466;
        return r21467;
}

double f(double r, double a, double b) {
        double r21468 = r;
        double r21469 = b;
        double r21470 = sin(r21469);
        double r21471 = a;
        double r21472 = cos(r21471);
        double r21473 = cos(r21469);
        double r21474 = sin(r21471);
        double r21475 = r21474 * r21470;
        double r21476 = -r21475;
        double r21477 = fma(r21472, r21473, r21476);
        double r21478 = r21470 / r21477;
        double r21479 = r21468 * r21478;
        return r21479;
}

Error

Bits error versus r

Bits error versus a

Bits error versus b

Derivation

  1. Initial program 15.2

    \[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 log1p-expm1-u0.3

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

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

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

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

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

Reproduce

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