Average Error: 15.0 → 0.4
Time: 27.0s
Precision: 64
\[r \cdot \frac{\sin b}{\cos \left(a + b\right)}\]
\[\frac{\frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \sin b\right)}}{\cos a \cdot \cos b - \sin b \cdot \sin a} \cdot \left(\cos a \cdot \cos b + \mathsf{log1p}\left(\mathsf{expm1}\left(\sin b \cdot \sin a\right)\right)\right)\]
r \cdot \frac{\sin b}{\cos \left(a + b\right)}
\frac{\frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \sin b\right)}}{\cos a \cdot \cos b - \sin b \cdot \sin a} \cdot \left(\cos a \cdot \cos b + \mathsf{log1p}\left(\mathsf{expm1}\left(\sin b \cdot \sin a\right)\right)\right)
double f(double r, double a, double b) {
        double r26771 = r;
        double r26772 = b;
        double r26773 = sin(r26772);
        double r26774 = a;
        double r26775 = r26774 + r26772;
        double r26776 = cos(r26775);
        double r26777 = r26773 / r26776;
        double r26778 = r26771 * r26777;
        return r26778;
}

double f(double r, double a, double b) {
        double r26779 = r;
        double r26780 = b;
        double r26781 = sin(r26780);
        double r26782 = r26779 * r26781;
        double r26783 = a;
        double r26784 = cos(r26783);
        double r26785 = cos(r26780);
        double r26786 = sin(r26783);
        double r26787 = r26786 * r26781;
        double r26788 = fma(r26784, r26785, r26787);
        double r26789 = r26782 / r26788;
        double r26790 = r26784 * r26785;
        double r26791 = r26781 * r26786;
        double r26792 = r26790 - r26791;
        double r26793 = r26789 / r26792;
        double r26794 = expm1(r26791);
        double r26795 = log1p(r26794);
        double r26796 = r26790 + r26795;
        double r26797 = r26793 * r26796;
        return r26797;
}

Error

Bits error versus r

Bits error versus a

Bits error versus b

Derivation

  1. Initial program 15.0

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

    \[\leadsto r \cdot \frac{\sin b}{\cos a \cdot \cos b - \color{blue}{\sin b \cdot \sin a}}\]
  5. Using strategy rm
  6. 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 b \cdot \sin a\right)\right)}}\]
  7. Using strategy rm
  8. Applied flip--0.4

    \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\frac{\left(\cos a \cdot \cos b\right) \cdot \left(\cos a \cdot \cos b\right) - \mathsf{log1p}\left(\mathsf{expm1}\left(\sin b \cdot \sin a\right)\right) \cdot \mathsf{log1p}\left(\mathsf{expm1}\left(\sin b \cdot \sin a\right)\right)}{\cos a \cdot \cos b + \mathsf{log1p}\left(\mathsf{expm1}\left(\sin b \cdot \sin a\right)\right)}}}\]
  9. Applied associate-/r/0.4

    \[\leadsto r \cdot \color{blue}{\left(\frac{\sin b}{\left(\cos a \cdot \cos b\right) \cdot \left(\cos a \cdot \cos b\right) - \mathsf{log1p}\left(\mathsf{expm1}\left(\sin b \cdot \sin a\right)\right) \cdot \mathsf{log1p}\left(\mathsf{expm1}\left(\sin b \cdot \sin a\right)\right)} \cdot \left(\cos a \cdot \cos b + \mathsf{log1p}\left(\mathsf{expm1}\left(\sin b \cdot \sin a\right)\right)\right)\right)}\]
  10. Applied associate-*r*0.4

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

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

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

Reproduce

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