Average Error: 14.6 → 0.3
Time: 7.1s
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 r19243 = r;
        double r19244 = b;
        double r19245 = sin(r19244);
        double r19246 = a;
        double r19247 = r19246 + r19244;
        double r19248 = cos(r19247);
        double r19249 = r19245 / r19248;
        double r19250 = r19243 * r19249;
        return r19250;
}

double f(double r, double a, double b) {
        double r19251 = r;
        double r19252 = b;
        double r19253 = sin(r19252);
        double r19254 = r19251 * r19253;
        double r19255 = a;
        double r19256 = cos(r19255);
        double r19257 = cos(r19252);
        double r19258 = sin(r19255);
        double r19259 = r19258 * r19253;
        double r19260 = expm1(r19259);
        double r19261 = log1p(r19260);
        double r19262 = -r19261;
        double r19263 = fma(r19256, r19257, r19262);
        double r19264 = r19254 / r19263;
        return r19264;
}

Error

Bits error versus r

Bits error versus a

Bits error versus b

Derivation

  1. Initial program 14.6

    \[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 log1p-expm1-u0.3

    \[\leadsto r \cdot \frac{\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. Using strategy rm
  9. Applied associate-*r/0.3

    \[\leadsto \color{blue}{\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)}}\]
  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 2020062 +o rules:numerics
(FPCore (r a b)
  :name "r*sin(b)/cos(a+b), B"
  :precision binary64
  (* r (/ (sin b) (cos (+ a b)))))