Average Error: 15.1 → 0.3
Time: 26.5s
Precision: 64
\[\frac{r \cdot \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)}\]
\frac{r \cdot \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 r698824 = r;
        double r698825 = b;
        double r698826 = sin(r698825);
        double r698827 = r698824 * r698826;
        double r698828 = a;
        double r698829 = r698828 + r698825;
        double r698830 = cos(r698829);
        double r698831 = r698827 / r698830;
        return r698831;
}

double f(double r, double a, double b) {
        double r698832 = r;
        double r698833 = b;
        double r698834 = sin(r698833);
        double r698835 = r698832 * r698834;
        double r698836 = a;
        double r698837 = cos(r698836);
        double r698838 = cos(r698833);
        double r698839 = sin(r698836);
        double r698840 = r698839 * r698834;
        double r698841 = expm1(r698840);
        double r698842 = log1p(r698841);
        double r698843 = -r698842;
        double r698844 = fma(r698837, r698838, r698843);
        double r698845 = r698835 / r698844;
        return r698845;
}

Error

Bits error versus r

Bits error versus a

Bits error versus b

Derivation

  1. Initial program 15.1

    \[\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. Using strategy rm
  7. 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)}\]
  8. 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 2019151 +o rules:numerics
(FPCore (r a b)
  :name "r*sin(b)/cos(a+b), A"
  (/ (* r (sin b)) (cos (+ a b))))