Average Error: 14.8 → 0.3
Time: 20.0s
Precision: 64
\[\frac{r \cdot \sin b}{\cos \left(a + b\right)}\]
\[\frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \left(-\sin b\right) \cdot \sin a\right)}\]
\frac{r \cdot \sin b}{\cos \left(a + b\right)}
\frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \left(-\sin b\right) \cdot \sin a\right)}
double f(double r, double a, double b) {
        double r458633 = r;
        double r458634 = b;
        double r458635 = sin(r458634);
        double r458636 = r458633 * r458635;
        double r458637 = a;
        double r458638 = r458637 + r458634;
        double r458639 = cos(r458638);
        double r458640 = r458636 / r458639;
        return r458640;
}

double f(double r, double a, double b) {
        double r458641 = r;
        double r458642 = b;
        double r458643 = sin(r458642);
        double r458644 = r458641 * r458643;
        double r458645 = a;
        double r458646 = cos(r458645);
        double r458647 = cos(r458642);
        double r458648 = -r458643;
        double r458649 = sin(r458645);
        double r458650 = r458648 * r458649;
        double r458651 = fma(r458646, r458647, r458650);
        double r458652 = r458644 / r458651;
        return r458652;
}

Error

Bits error versus r

Bits error versus a

Bits error versus b

Derivation

  1. Initial program 14.8

    \[\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. Final simplification0.3

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

Reproduce

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