Average Error: 15.2 → 0.4
Time: 6.1s
Precision: 64
\[\frac{r \cdot \sin b}{\cos \left(a + b\right)}\]
\[\frac{r \cdot \sin b}{\mathsf{expm1}\left(\mathsf{log1p}\left(\mathsf{fma}\left(\cos a, \cos b, -\sin a \cdot \sin b\right)\right)\right)}\]
\frac{r \cdot \sin b}{\cos \left(a + b\right)}
\frac{r \cdot \sin b}{\mathsf{expm1}\left(\mathsf{log1p}\left(\mathsf{fma}\left(\cos a, \cos b, -\sin a \cdot \sin b\right)\right)\right)}
double f(double r, double a, double b) {
        double r16522 = r;
        double r16523 = b;
        double r16524 = sin(r16523);
        double r16525 = r16522 * r16524;
        double r16526 = a;
        double r16527 = r16526 + r16523;
        double r16528 = cos(r16527);
        double r16529 = r16525 / r16528;
        return r16529;
}

double f(double r, double a, double b) {
        double r16530 = r;
        double r16531 = b;
        double r16532 = sin(r16531);
        double r16533 = r16530 * r16532;
        double r16534 = a;
        double r16535 = cos(r16534);
        double r16536 = cos(r16531);
        double r16537 = sin(r16534);
        double r16538 = r16537 * r16532;
        double r16539 = -r16538;
        double r16540 = fma(r16535, r16536, r16539);
        double r16541 = log1p(r16540);
        double r16542 = expm1(r16541);
        double r16543 = r16533 / r16542;
        return r16543;
}

Error

Bits error versus r

Bits error versus a

Bits error versus b

Derivation

  1. Initial program 15.2

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

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

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

Reproduce

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