Average Error: 15.0 → 0.4
Time: 7.5s
Precision: 64
\[\frac{r \cdot \sin b}{\cos \left(a + b\right)}\]
\[\frac{r}{\mathsf{fma}\left(\cos b, \cos a, \sin a \cdot \sin b\right)} \cdot \frac{\sin b \cdot \mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \sin b\right)}{\cos a \cdot \cos b - \sin a \cdot \sin b}\]
\frac{r \cdot \sin b}{\cos \left(a + b\right)}
\frac{r}{\mathsf{fma}\left(\cos b, \cos a, \sin a \cdot \sin b\right)} \cdot \frac{\sin b \cdot \mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \sin b\right)}{\cos a \cdot \cos b - \sin a \cdot \sin b}
double f(double r, double a, double b) {
        double r23642 = r;
        double r23643 = b;
        double r23644 = sin(r23643);
        double r23645 = r23642 * r23644;
        double r23646 = a;
        double r23647 = r23646 + r23643;
        double r23648 = cos(r23647);
        double r23649 = r23645 / r23648;
        return r23649;
}

double f(double r, double a, double b) {
        double r23650 = r;
        double r23651 = b;
        double r23652 = cos(r23651);
        double r23653 = a;
        double r23654 = cos(r23653);
        double r23655 = sin(r23653);
        double r23656 = sin(r23651);
        double r23657 = r23655 * r23656;
        double r23658 = fma(r23652, r23654, r23657);
        double r23659 = r23650 / r23658;
        double r23660 = fma(r23654, r23652, r23657);
        double r23661 = r23656 * r23660;
        double r23662 = r23654 * r23652;
        double r23663 = r23662 - r23657;
        double r23664 = r23661 / r23663;
        double r23665 = r23659 * r23664;
        return r23665;
}

Error

Bits error versus r

Bits error versus a

Bits error versus b

Derivation

  1. Initial program 15.0

    \[\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 div-inv0.4

    \[\leadsto \color{blue}{\left(r \cdot \sin b\right) \cdot \frac{1}{\cos a \cdot \cos b - \sin a \cdot \sin b}}\]
  6. Using strategy rm
  7. Applied flip--0.4

    \[\leadsto \left(r \cdot \sin b\right) \cdot \frac{1}{\color{blue}{\frac{\left(\cos a \cdot \cos b\right) \cdot \left(\cos a \cdot \cos b\right) - \left(\sin a \cdot \sin b\right) \cdot \left(\sin a \cdot \sin b\right)}{\cos a \cdot \cos b + \sin a \cdot \sin b}}}\]
  8. Applied associate-/r/0.5

    \[\leadsto \left(r \cdot \sin b\right) \cdot \color{blue}{\left(\frac{1}{\left(\cos a \cdot \cos b\right) \cdot \left(\cos a \cdot \cos b\right) - \left(\sin a \cdot \sin b\right) \cdot \left(\sin a \cdot \sin b\right)} \cdot \left(\cos a \cdot \cos b + \sin a \cdot \sin b\right)\right)}\]
  9. Applied associate-*r*0.5

    \[\leadsto \color{blue}{\left(\left(r \cdot \sin b\right) \cdot \frac{1}{\left(\cos a \cdot \cos b\right) \cdot \left(\cos a \cdot \cos b\right) - \left(\sin a \cdot \sin b\right) \cdot \left(\sin a \cdot \sin b\right)}\right) \cdot \left(\cos a \cdot \cos b + \sin a \cdot \sin b\right)}\]
  10. Simplified0.5

    \[\leadsto \color{blue}{\left(\frac{r}{\mathsf{fma}\left(\cos b, \cos a, \sin a \cdot \sin b\right)} \cdot \frac{\sin b}{\cos a \cdot \cos b - \sin a \cdot \sin b}\right)} \cdot \left(\cos a \cdot \cos b + \sin a \cdot \sin b\right)\]
  11. Using strategy rm
  12. Applied associate-*l*0.4

    \[\leadsto \color{blue}{\frac{r}{\mathsf{fma}\left(\cos b, \cos a, \sin a \cdot \sin b\right)} \cdot \left(\frac{\sin b}{\cos a \cdot \cos b - \sin a \cdot \sin b} \cdot \left(\cos a \cdot \cos b + \sin a \cdot \sin b\right)\right)}\]
  13. Simplified0.4

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

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

Reproduce

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