Average Error: 14.8 → 0.3
Time: 17.9s
Precision: 64
\[r \cdot \frac{\sin b}{\cos \left(a + b\right)}\]
\[\frac{\sin b \cdot r}{\mathsf{fma}\left(\cos a, \cos b, \mathsf{expm1}\left(\mathsf{log1p}\left(\left(-\sin a\right) \cdot \sin b\right)\right)\right)}\]
r \cdot \frac{\sin b}{\cos \left(a + b\right)}
\frac{\sin b \cdot r}{\mathsf{fma}\left(\cos a, \cos b, \mathsf{expm1}\left(\mathsf{log1p}\left(\left(-\sin a\right) \cdot \sin b\right)\right)\right)}
double f(double r, double a, double b) {
        double r26282 = r;
        double r26283 = b;
        double r26284 = sin(r26283);
        double r26285 = a;
        double r26286 = r26285 + r26283;
        double r26287 = cos(r26286);
        double r26288 = r26284 / r26287;
        double r26289 = r26282 * r26288;
        return r26289;
}

double f(double r, double a, double b) {
        double r26290 = b;
        double r26291 = sin(r26290);
        double r26292 = r;
        double r26293 = r26291 * r26292;
        double r26294 = a;
        double r26295 = cos(r26294);
        double r26296 = cos(r26290);
        double r26297 = sin(r26294);
        double r26298 = -r26297;
        double r26299 = r26298 * r26291;
        double r26300 = log1p(r26299);
        double r26301 = expm1(r26300);
        double r26302 = fma(r26295, r26296, r26301);
        double r26303 = r26293 / r26302;
        return r26303;
}

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

    \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\mathsf{fma}\left(\cos a, \cos b, -\sin b \cdot \sin a\right)}}\]
  7. Simplified0.3

    \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\left(-\sin a\right) \cdot \sin b}\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, \left(-\sin a\right) \cdot \sin b\right)}}\]
  10. Simplified0.3

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

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

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

Reproduce

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