Average Error: 14.9 → 0.3
Time: 25.1s
Precision: 64
\[r \cdot \frac{\sin b}{\cos \left(a + b\right)}\]
\[\frac{\sin b}{\mathsf{fma}\left(-\sin b, \sin a, \sin a \cdot \sin b\right) + \mathsf{fma}\left(\cos a, \cos b, \left(-\sin b\right) \cdot \sin a\right)} \cdot r\]
r \cdot \frac{\sin b}{\cos \left(a + b\right)}
\frac{\sin b}{\mathsf{fma}\left(-\sin b, \sin a, \sin a \cdot \sin b\right) + \mathsf{fma}\left(\cos a, \cos b, \left(-\sin b\right) \cdot \sin a\right)} \cdot r
double f(double r, double a, double b) {
        double r464468 = r;
        double r464469 = b;
        double r464470 = sin(r464469);
        double r464471 = a;
        double r464472 = r464471 + r464469;
        double r464473 = cos(r464472);
        double r464474 = r464470 / r464473;
        double r464475 = r464468 * r464474;
        return r464475;
}

double f(double r, double a, double b) {
        double r464476 = b;
        double r464477 = sin(r464476);
        double r464478 = -r464477;
        double r464479 = a;
        double r464480 = sin(r464479);
        double r464481 = r464480 * r464477;
        double r464482 = fma(r464478, r464480, r464481);
        double r464483 = cos(r464479);
        double r464484 = cos(r464476);
        double r464485 = r464478 * r464480;
        double r464486 = fma(r464483, r464484, r464485);
        double r464487 = r464482 + r464486;
        double r464488 = r464477 / r464487;
        double r464489 = r;
        double r464490 = r464488 * r464489;
        return r464490;
}

Error

Bits error versus r

Bits error versus a

Bits error versus b

Derivation

  1. Initial program 14.9

    \[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. Final simplification0.3

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

Reproduce

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