Average Error: 12.5 → 0.6
Time: 2.4m
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(3 + \frac{\frac{2}{r}}{r}\right) - (\left(\left(\sqrt{0.125} \cdot \sqrt{\frac{(v \cdot -2 + 3)_*}{\frac{1 - v}{0.125}}}\right) \cdot \sqrt{\frac{(v \cdot -2 + 3)_*}{1 - v}}\right) \cdot \left(\left(r \cdot w\right) \cdot \left(r \cdot w\right)\right) + 4.5)_*\]
double f(double v, double w, double r) {
        double r3844984 = 3.0;
        double r3844985 = 2.0;
        double r3844986 = r;
        double r3844987 = r3844986 * r3844986;
        double r3844988 = r3844985 / r3844987;
        double r3844989 = r3844984 + r3844988;
        double r3844990 = 0.125;
        double r3844991 = v;
        double r3844992 = r3844985 * r3844991;
        double r3844993 = r3844984 - r3844992;
        double r3844994 = r3844990 * r3844993;
        double r3844995 = w;
        double r3844996 = r3844995 * r3844995;
        double r3844997 = r3844996 * r3844986;
        double r3844998 = r3844997 * r3844986;
        double r3844999 = r3844994 * r3844998;
        double r3845000 = 1.0;
        double r3845001 = r3845000 - r3844991;
        double r3845002 = r3844999 / r3845001;
        double r3845003 = r3844989 - r3845002;
        double r3845004 = 4.5;
        double r3845005 = r3845003 - r3845004;
        return r3845005;
}

double f(double v, double w, double r) {
        double r3845006 = 3.0;
        double r3845007 = 2.0;
        double r3845008 = r;
        double r3845009 = r3845007 / r3845008;
        double r3845010 = r3845009 / r3845008;
        double r3845011 = r3845006 + r3845010;
        double r3845012 = 0.125;
        double r3845013 = sqrt(r3845012);
        double r3845014 = v;
        double r3845015 = -2.0;
        double r3845016 = fma(r3845014, r3845015, r3845006);
        double r3845017 = 1.0;
        double r3845018 = r3845017 - r3845014;
        double r3845019 = r3845018 / r3845012;
        double r3845020 = r3845016 / r3845019;
        double r3845021 = sqrt(r3845020);
        double r3845022 = r3845013 * r3845021;
        double r3845023 = r3845016 / r3845018;
        double r3845024 = sqrt(r3845023);
        double r3845025 = r3845022 * r3845024;
        double r3845026 = w;
        double r3845027 = r3845008 * r3845026;
        double r3845028 = r3845027 * r3845027;
        double r3845029 = 4.5;
        double r3845030 = fma(r3845025, r3845028, r3845029);
        double r3845031 = r3845011 - r3845030;
        return r3845031;
}

\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(3 + \frac{\frac{2}{r}}{r}\right) - (\left(\left(\sqrt{0.125} \cdot \sqrt{\frac{(v \cdot -2 + 3)_*}{\frac{1 - v}{0.125}}}\right) \cdot \sqrt{\frac{(v \cdot -2 + 3)_*}{1 - v}}\right) \cdot \left(\left(r \cdot w\right) \cdot \left(r \cdot w\right)\right) + 4.5)_*

Error

Bits error versus v

Bits error versus w

Bits error versus r

Derivation

  1. Initial program 12.5

    \[\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.5

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

    \[\leadsto \left(3 + \color{blue}{\frac{\frac{2}{r}}{r}}\right) - (\left(\frac{(v \cdot -2 + 3)_*}{\frac{1 - v}{0.125}}\right) \cdot \left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right) + 4.5)_*\]
  5. Using strategy rm
  6. Applied add-sqr-sqrt0.5

    \[\leadsto \left(3 + \frac{\frac{2}{r}}{r}\right) - (\color{blue}{\left(\sqrt{\frac{(v \cdot -2 + 3)_*}{\frac{1 - v}{0.125}}} \cdot \sqrt{\frac{(v \cdot -2 + 3)_*}{\frac{1 - v}{0.125}}}\right)} \cdot \left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right) + 4.5)_*\]
  7. Using strategy rm
  8. Applied associate-/r/0.5

    \[\leadsto \left(3 + \frac{\frac{2}{r}}{r}\right) - (\left(\sqrt{\color{blue}{\frac{(v \cdot -2 + 3)_*}{1 - v} \cdot 0.125}} \cdot \sqrt{\frac{(v \cdot -2 + 3)_*}{\frac{1 - v}{0.125}}}\right) \cdot \left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right) + 4.5)_*\]
  9. Applied sqrt-prod0.6

    \[\leadsto \left(3 + \frac{\frac{2}{r}}{r}\right) - (\left(\color{blue}{\left(\sqrt{\frac{(v \cdot -2 + 3)_*}{1 - v}} \cdot \sqrt{0.125}\right)} \cdot \sqrt{\frac{(v \cdot -2 + 3)_*}{\frac{1 - v}{0.125}}}\right) \cdot \left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right) + 4.5)_*\]
  10. Applied associate-*l*0.6

    \[\leadsto \left(3 + \frac{\frac{2}{r}}{r}\right) - (\color{blue}{\left(\sqrt{\frac{(v \cdot -2 + 3)_*}{1 - v}} \cdot \left(\sqrt{0.125} \cdot \sqrt{\frac{(v \cdot -2 + 3)_*}{\frac{1 - v}{0.125}}}\right)\right)} \cdot \left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right) + 4.5)_*\]
  11. Final simplification0.6

    \[\leadsto \left(3 + \frac{\frac{2}{r}}{r}\right) - (\left(\left(\sqrt{0.125} \cdot \sqrt{\frac{(v \cdot -2 + 3)_*}{\frac{1 - v}{0.125}}}\right) \cdot \sqrt{\frac{(v \cdot -2 + 3)_*}{1 - v}}\right) \cdot \left(\left(r \cdot w\right) \cdot \left(r \cdot w\right)\right) + 4.5)_*\]

Reproduce

herbie shell --seed 2019101 +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))