Average Error: 15.5 → 0.4
Time: 53.3s
Precision: 64
\[\frac{r \cdot \sin b}{\cos \left(a + b\right)}\]
\[-\frac{r \cdot \sin b}{\mathsf{fma}\left(-\cos b, \cos a, \mathsf{expm1}\left(\mathsf{log1p}\left(\sin b \cdot \sin a\right)\right)\right)}\]
\frac{r \cdot \sin b}{\cos \left(a + b\right)}
-\frac{r \cdot \sin b}{\mathsf{fma}\left(-\cos b, \cos a, \mathsf{expm1}\left(\mathsf{log1p}\left(\sin b \cdot \sin a\right)\right)\right)}
double f(double r, double a, double b) {
        double r945528 = r;
        double r945529 = b;
        double r945530 = sin(r945529);
        double r945531 = r945528 * r945530;
        double r945532 = a;
        double r945533 = r945532 + r945529;
        double r945534 = cos(r945533);
        double r945535 = r945531 / r945534;
        return r945535;
}

double f(double r, double a, double b) {
        double r945536 = r;
        double r945537 = b;
        double r945538 = sin(r945537);
        double r945539 = r945536 * r945538;
        double r945540 = cos(r945537);
        double r945541 = -r945540;
        double r945542 = a;
        double r945543 = cos(r945542);
        double r945544 = sin(r945542);
        double r945545 = r945538 * r945544;
        double r945546 = log1p(r945545);
        double r945547 = expm1(r945546);
        double r945548 = fma(r945541, r945543, r945547);
        double r945549 = r945539 / r945548;
        double r945550 = -r945549;
        return r945550;
}

Error

Bits error versus r

Bits error versus a

Bits error versus b

Derivation

  1. Initial program 15.5

    \[\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 frac-2neg0.3

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

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

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

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

Reproduce

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