Average Error: 14.8 → 0.3
Time: 25.7s
Precision: 64
\[r \cdot \frac{\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) + \mathsf{fma}\left(-\sin b, \sin a, \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, \left(-\sin b\right) \cdot \sin a\right) + \mathsf{fma}\left(-\sin b, \sin a, \mathsf{log1p}\left(\mathsf{expm1}\left(\sin a \cdot \sin b\right)\right)\right)}
double f(double r, double a, double b) {
        double r881303 = r;
        double r881304 = b;
        double r881305 = sin(r881304);
        double r881306 = a;
        double r881307 = r881306 + r881304;
        double r881308 = cos(r881307);
        double r881309 = r881305 / r881308;
        double r881310 = r881303 * r881309;
        return r881310;
}

double f(double r, double a, double b) {
        double r881311 = r;
        double r881312 = b;
        double r881313 = sin(r881312);
        double r881314 = r881311 * r881313;
        double r881315 = a;
        double r881316 = cos(r881315);
        double r881317 = cos(r881312);
        double r881318 = -r881313;
        double r881319 = sin(r881315);
        double r881320 = r881318 * r881319;
        double r881321 = fma(r881316, r881317, r881320);
        double r881322 = r881319 * r881313;
        double r881323 = expm1(r881322);
        double r881324 = log1p(r881323);
        double r881325 = fma(r881318, r881319, r881324);
        double r881326 = r881321 + r881325;
        double r881327 = r881314 / r881326;
        return r881327;
}

Error

Bits error versus r

Bits error versus a

Bits error versus b

Derivation

  1. Initial program 14.8

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

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

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

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

Reproduce

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