Average Error: 12.3 → 0.3
Time: 36.2s
Precision: 64
\[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5\]
\[\left(\left(3 - \frac{0.125 \cdot w}{\frac{\frac{1 - v}{\mathsf{fma}\left(-2, v, 3\right)}}{r}} \cdot \left(w \cdot r\right)\right) - 4.5\right) + \frac{\frac{2}{r}}{r}\]
\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5
\left(\left(3 - \frac{0.125 \cdot w}{\frac{\frac{1 - v}{\mathsf{fma}\left(-2, v, 3\right)}}{r}} \cdot \left(w \cdot r\right)\right) - 4.5\right) + \frac{\frac{2}{r}}{r}
double f(double v, double w, double r) {
        double r1257849 = 3.0;
        double r1257850 = 2.0;
        double r1257851 = r;
        double r1257852 = r1257851 * r1257851;
        double r1257853 = r1257850 / r1257852;
        double r1257854 = r1257849 + r1257853;
        double r1257855 = 0.125;
        double r1257856 = v;
        double r1257857 = r1257850 * r1257856;
        double r1257858 = r1257849 - r1257857;
        double r1257859 = r1257855 * r1257858;
        double r1257860 = w;
        double r1257861 = r1257860 * r1257860;
        double r1257862 = r1257861 * r1257851;
        double r1257863 = r1257862 * r1257851;
        double r1257864 = r1257859 * r1257863;
        double r1257865 = 1.0;
        double r1257866 = r1257865 - r1257856;
        double r1257867 = r1257864 / r1257866;
        double r1257868 = r1257854 - r1257867;
        double r1257869 = 4.5;
        double r1257870 = r1257868 - r1257869;
        return r1257870;
}

double f(double v, double w, double r) {
        double r1257871 = 3.0;
        double r1257872 = 0.125;
        double r1257873 = w;
        double r1257874 = r1257872 * r1257873;
        double r1257875 = 1.0;
        double r1257876 = v;
        double r1257877 = r1257875 - r1257876;
        double r1257878 = -2.0;
        double r1257879 = fma(r1257878, r1257876, r1257871);
        double r1257880 = r1257877 / r1257879;
        double r1257881 = r;
        double r1257882 = r1257880 / r1257881;
        double r1257883 = r1257874 / r1257882;
        double r1257884 = r1257873 * r1257881;
        double r1257885 = r1257883 * r1257884;
        double r1257886 = r1257871 - r1257885;
        double r1257887 = 4.5;
        double r1257888 = r1257886 - r1257887;
        double r1257889 = 2.0;
        double r1257890 = r1257889 / r1257881;
        double r1257891 = r1257890 / r1257881;
        double r1257892 = r1257888 + r1257891;
        return r1257892;
}

Error

Bits error versus v

Bits error versus w

Bits error versus r

Derivation

  1. Initial program 12.3

    \[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5\]
  2. Simplified0.3

    \[\leadsto \color{blue}{\frac{2}{r \cdot r} + \left(3 - \mathsf{fma}\left(\frac{0.125 \cdot \left(w \cdot r\right)}{\frac{1 - v}{\mathsf{fma}\left(-2, v, 3\right)}}, w \cdot r, 4.5\right)\right)}\]
  3. Using strategy rm
  4. Applied associate-/r*0.3

    \[\leadsto \color{blue}{\frac{\frac{2}{r}}{r}} + \left(3 - \mathsf{fma}\left(\frac{0.125 \cdot \left(w \cdot r\right)}{\frac{1 - v}{\mathsf{fma}\left(-2, v, 3\right)}}, w \cdot r, 4.5\right)\right)\]
  5. Using strategy rm
  6. Applied fma-udef0.3

    \[\leadsto \frac{\frac{2}{r}}{r} + \left(3 - \color{blue}{\left(\frac{0.125 \cdot \left(w \cdot r\right)}{\frac{1 - v}{\mathsf{fma}\left(-2, v, 3\right)}} \cdot \left(w \cdot r\right) + 4.5\right)}\right)\]
  7. Applied associate--r+0.3

    \[\leadsto \frac{\frac{2}{r}}{r} + \color{blue}{\left(\left(3 - \frac{0.125 \cdot \left(w \cdot r\right)}{\frac{1 - v}{\mathsf{fma}\left(-2, v, 3\right)}} \cdot \left(w \cdot r\right)\right) - 4.5\right)}\]
  8. Using strategy rm
  9. Applied associate-/l*0.4

    \[\leadsto \frac{\frac{2}{r}}{r} + \left(\left(3 - \color{blue}{\frac{0.125}{\frac{\frac{1 - v}{\mathsf{fma}\left(-2, v, 3\right)}}{w \cdot r}}} \cdot \left(w \cdot r\right)\right) - 4.5\right)\]
  10. Using strategy rm
  11. Applied *-un-lft-identity0.4

    \[\leadsto \frac{\frac{2}{r}}{r} + \left(\left(3 - \frac{0.125}{\frac{\frac{1 - v}{\color{blue}{1 \cdot \mathsf{fma}\left(-2, v, 3\right)}}}{w \cdot r}} \cdot \left(w \cdot r\right)\right) - 4.5\right)\]
  12. Applied *-un-lft-identity0.4

    \[\leadsto \frac{\frac{2}{r}}{r} + \left(\left(3 - \frac{0.125}{\frac{\frac{\color{blue}{1 \cdot \left(1 - v\right)}}{1 \cdot \mathsf{fma}\left(-2, v, 3\right)}}{w \cdot r}} \cdot \left(w \cdot r\right)\right) - 4.5\right)\]
  13. Applied times-frac0.4

    \[\leadsto \frac{\frac{2}{r}}{r} + \left(\left(3 - \frac{0.125}{\frac{\color{blue}{\frac{1}{1} \cdot \frac{1 - v}{\mathsf{fma}\left(-2, v, 3\right)}}}{w \cdot r}} \cdot \left(w \cdot r\right)\right) - 4.5\right)\]
  14. Applied times-frac0.3

    \[\leadsto \frac{\frac{2}{r}}{r} + \left(\left(3 - \frac{0.125}{\color{blue}{\frac{\frac{1}{1}}{w} \cdot \frac{\frac{1 - v}{\mathsf{fma}\left(-2, v, 3\right)}}{r}}} \cdot \left(w \cdot r\right)\right) - 4.5\right)\]
  15. Applied associate-/r*0.3

    \[\leadsto \frac{\frac{2}{r}}{r} + \left(\left(3 - \color{blue}{\frac{\frac{0.125}{\frac{\frac{1}{1}}{w}}}{\frac{\frac{1 - v}{\mathsf{fma}\left(-2, v, 3\right)}}{r}}} \cdot \left(w \cdot r\right)\right) - 4.5\right)\]
  16. Simplified0.3

    \[\leadsto \frac{\frac{2}{r}}{r} + \left(\left(3 - \frac{\color{blue}{0.125 \cdot w}}{\frac{\frac{1 - v}{\mathsf{fma}\left(-2, v, 3\right)}}{r}} \cdot \left(w \cdot r\right)\right) - 4.5\right)\]
  17. Final simplification0.3

    \[\leadsto \left(\left(3 - \frac{0.125 \cdot w}{\frac{\frac{1 - v}{\mathsf{fma}\left(-2, v, 3\right)}}{r}} \cdot \left(w \cdot r\right)\right) - 4.5\right) + \frac{\frac{2}{r}}{r}\]

Reproduce

herbie shell --seed 2019142 +o rules:numerics
(FPCore (v w r)
  :name "Rosa's TurbineBenchmark"
  (- (- (+ 3 (/ 2 (* r r))) (/ (* (* 0.125 (- 3 (* 2 v))) (* (* (* w w) r) r)) (- 1 v))) 4.5))