Average Error: 15.5 → 0.3
Time: 23.2s
Precision: 64
\[r \cdot \frac{\sin b}{\cos \left(a + b\right)}\]
\[\frac{r \cdot \sin b}{\mathsf{fma}\left(-\sin b, \sin a, \sin a \cdot \sin b\right) + \left(\cos a \cdot \cos b - \sin a \cdot \sin b\right)}\]
r \cdot \frac{\sin b}{\cos \left(a + b\right)}
\frac{r \cdot \sin b}{\mathsf{fma}\left(-\sin b, \sin a, \sin a \cdot \sin b\right) + \left(\cos a \cdot \cos b - \sin a \cdot \sin b\right)}
double f(double r, double a, double b) {
        double r1002260 = r;
        double r1002261 = b;
        double r1002262 = sin(r1002261);
        double r1002263 = a;
        double r1002264 = r1002263 + r1002261;
        double r1002265 = cos(r1002264);
        double r1002266 = r1002262 / r1002265;
        double r1002267 = r1002260 * r1002266;
        return r1002267;
}

double f(double r, double a, double b) {
        double r1002268 = r;
        double r1002269 = b;
        double r1002270 = sin(r1002269);
        double r1002271 = r1002268 * r1002270;
        double r1002272 = -r1002270;
        double r1002273 = a;
        double r1002274 = sin(r1002273);
        double r1002275 = r1002274 * r1002270;
        double r1002276 = fma(r1002272, r1002274, r1002275);
        double r1002277 = cos(r1002273);
        double r1002278 = cos(r1002269);
        double r1002279 = r1002277 * r1002278;
        double r1002280 = r1002279 - r1002275;
        double r1002281 = r1002276 + r1002280;
        double r1002282 = r1002271 / r1002281;
        return r1002282;
}

Error

Bits error versus r

Bits error versus a

Bits error versus b

Derivation

  1. Initial program 15.5

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

    \[\leadsto r \cdot \frac{\sin b}{\cos a \cdot \cos b - \color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\sin a \cdot \sin b\right)\right)}}\]
  6. Taylor expanded around -inf 0.3

    \[\leadsto \color{blue}{\frac{\sin b \cdot r}{\cos a \cdot \cos b - \sin a \cdot \sin b}}\]
  7. Using strategy rm
  8. Applied prod-diff0.3

    \[\leadsto \frac{\sin b \cdot r}{\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)}}\]
  9. Simplified0.3

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

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

Reproduce

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