Average Error: 15.4 → 0.3
Time: 20.6s
Precision: 64
\[r \cdot \frac{\sin b}{\cos \left(a + b\right)}\]
\[\frac{r \cdot \sin b}{\mathsf{fma}\left(\cos b, \cos a, \left(-\sin a\right) \cdot \sin b\right)}\]
r \cdot \frac{\sin b}{\cos \left(a + b\right)}
\frac{r \cdot \sin b}{\mathsf{fma}\left(\cos b, \cos a, \left(-\sin a\right) \cdot \sin b\right)}
double f(double r, double a, double b) {
        double r27944 = r;
        double r27945 = b;
        double r27946 = sin(r27945);
        double r27947 = a;
        double r27948 = r27947 + r27945;
        double r27949 = cos(r27948);
        double r27950 = r27946 / r27949;
        double r27951 = r27944 * r27950;
        return r27951;
}

double f(double r, double a, double b) {
        double r27952 = r;
        double r27953 = b;
        double r27954 = sin(r27953);
        double r27955 = r27952 * r27954;
        double r27956 = cos(r27953);
        double r27957 = a;
        double r27958 = cos(r27957);
        double r27959 = sin(r27957);
        double r27960 = -r27959;
        double r27961 = r27960 * r27954;
        double r27962 = fma(r27956, r27958, r27961);
        double r27963 = r27955 / r27962;
        return r27963;
}

Error

Bits error versus r

Bits error versus a

Bits error versus b

Derivation

  1. Initial program 15.4

    \[r \cdot \frac{\sin b}{\cos \left(a + b\right)}\]
  2. Simplified15.4

    \[\leadsto \color{blue}{\sin b \cdot \frac{r}{\cos \left(b + a\right)}}\]
  3. Using strategy rm
  4. Applied cos-sum0.3

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

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

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

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

    \[\leadsto \sin b \cdot \frac{r}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\sin a \cdot \left(-\sin b\right)}\right)}\]
  10. Using strategy rm
  11. Applied pow10.3

    \[\leadsto \sin b \cdot \color{blue}{{\left(\frac{r}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \left(-\sin b\right)\right)}\right)}^{1}}\]
  12. Applied pow10.3

    \[\leadsto \color{blue}{{\left(\sin b\right)}^{1}} \cdot {\left(\frac{r}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \left(-\sin b\right)\right)}\right)}^{1}\]
  13. Applied pow-prod-down0.3

    \[\leadsto \color{blue}{{\left(\sin b \cdot \frac{r}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \left(-\sin b\right)\right)}\right)}^{1}}\]
  14. Simplified0.3

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

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

Reproduce

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