Average Error: 15.1 → 0.3
Time: 21.9s
Precision: 64
\[r \cdot \frac{\sin b}{\cos \left(a + b\right)}\]
\[\frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, -\mathsf{log1p}\left(\mathsf{expm1}\left(\sin a \cdot \sin b\right)\right)\right)}\]
r \cdot \frac{\sin b}{\cos \left(a + b\right)}
\frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, -\mathsf{log1p}\left(\mathsf{expm1}\left(\sin a \cdot \sin b\right)\right)\right)}
double f(double r, double a, double b) {
        double r1071758 = r;
        double r1071759 = b;
        double r1071760 = sin(r1071759);
        double r1071761 = a;
        double r1071762 = r1071761 + r1071759;
        double r1071763 = cos(r1071762);
        double r1071764 = r1071760 / r1071763;
        double r1071765 = r1071758 * r1071764;
        return r1071765;
}

double f(double r, double a, double b) {
        double r1071766 = r;
        double r1071767 = b;
        double r1071768 = sin(r1071767);
        double r1071769 = r1071766 * r1071768;
        double r1071770 = a;
        double r1071771 = cos(r1071770);
        double r1071772 = cos(r1071767);
        double r1071773 = sin(r1071770);
        double r1071774 = r1071773 * r1071768;
        double r1071775 = expm1(r1071774);
        double r1071776 = log1p(r1071775);
        double r1071777 = -r1071776;
        double r1071778 = fma(r1071771, r1071772, r1071777);
        double r1071779 = r1071769 / r1071778;
        return r1071779;
}

Error

Bits error versus r

Bits error versus a

Bits error versus b

Derivation

  1. Initial program 15.1

    \[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 fma-neg0.3

    \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\mathsf{fma}\left(\cos a, \cos b, -\sin a \cdot \sin b\right)}}\]
  6. Using strategy rm
  7. Applied associate-*r/0.3

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

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

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

Reproduce

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