Average Error: 15.0 → 0.3
Time: 12.4s
Precision: 64
\[\frac{r \cdot \sin b}{\cos \left(a + b\right)}\]
\[\frac{r}{\mathsf{fma}\left(\cos a, \cos b, -\sin b \cdot \sin a\right)} \cdot \sin b\]
\frac{r \cdot \sin b}{\cos \left(a + b\right)}
\frac{r}{\mathsf{fma}\left(\cos a, \cos b, -\sin b \cdot \sin a\right)} \cdot \sin b
double f(double r, double a, double b) {
        double r19203 = r;
        double r19204 = b;
        double r19205 = sin(r19204);
        double r19206 = r19203 * r19205;
        double r19207 = a;
        double r19208 = r19207 + r19204;
        double r19209 = cos(r19208);
        double r19210 = r19206 / r19209;
        return r19210;
}

double f(double r, double a, double b) {
        double r19211 = r;
        double r19212 = a;
        double r19213 = cos(r19212);
        double r19214 = b;
        double r19215 = cos(r19214);
        double r19216 = sin(r19214);
        double r19217 = sin(r19212);
        double r19218 = r19216 * r19217;
        double r19219 = -r19218;
        double r19220 = fma(r19213, r19215, r19219);
        double r19221 = r19211 / r19220;
        double r19222 = r19221 * r19216;
        return r19222;
}

Error

Bits error versus r

Bits error versus a

Bits error versus b

Derivation

  1. Initial program 15.0

    \[\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 associate-/l*0.4

    \[\leadsto \color{blue}{\frac{r}{\frac{\cos a \cdot \cos b - \sin a \cdot \sin b}{\sin b}}}\]
  6. Simplified0.4

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

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

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

Reproduce

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