Average Error: 14.7 → 0.4
Time: 42.9s
Precision: 64
\[\frac{r \cdot \sin b}{\cos \left(a + b\right)}\]
\[\left(r \cdot \sin b\right) \cdot \frac{1}{\mathsf{fma}\left(\sin b, -\sin a, \cos b \cdot \cos a\right)}\]
\frac{r \cdot \sin b}{\cos \left(a + b\right)}
\left(r \cdot \sin b\right) \cdot \frac{1}{\mathsf{fma}\left(\sin b, -\sin a, \cos b \cdot \cos a\right)}
double f(double r, double a, double b) {
        double r24909 = r;
        double r24910 = b;
        double r24911 = sin(r24910);
        double r24912 = r24909 * r24911;
        double r24913 = a;
        double r24914 = r24913 + r24910;
        double r24915 = cos(r24914);
        double r24916 = r24912 / r24915;
        return r24916;
}

double f(double r, double a, double b) {
        double r24917 = r;
        double r24918 = b;
        double r24919 = sin(r24918);
        double r24920 = r24917 * r24919;
        double r24921 = 1.0;
        double r24922 = a;
        double r24923 = sin(r24922);
        double r24924 = -r24923;
        double r24925 = cos(r24918);
        double r24926 = cos(r24922);
        double r24927 = r24925 * r24926;
        double r24928 = fma(r24919, r24924, r24927);
        double r24929 = r24921 / r24928;
        double r24930 = r24920 * r24929;
        return r24930;
}

Error

Bits error versus r

Bits error versus a

Bits error versus b

Derivation

  1. Initial program 14.7

    \[\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. Taylor expanded around inf 0.3

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

    \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\mathsf{fma}\left(\sin b, -\sin a, \cos b \cdot \cos a\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(\sin b, -\sin a, \cos b \cdot \cos a\right)}}\]
  8. Final simplification0.4

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

Reproduce

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