Average Error: 12.6 → 0.4
Time: 23.1s
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(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right) \cdot \left(\frac{0.125}{1 - v} \cdot \mathsf{fma}\left(v, -2, 3\right)\right) + 4.5\right)\]
\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(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right) \cdot \left(\frac{0.125}{1 - v} \cdot \mathsf{fma}\left(v, -2, 3\right)\right) + 4.5\right)
double f(double v, double w, double r) {
        double r619827 = 3.0;
        double r619828 = 2.0;
        double r619829 = r;
        double r619830 = r619829 * r619829;
        double r619831 = r619828 / r619830;
        double r619832 = r619827 + r619831;
        double r619833 = 0.125;
        double r619834 = v;
        double r619835 = r619828 * r619834;
        double r619836 = r619827 - r619835;
        double r619837 = r619833 * r619836;
        double r619838 = w;
        double r619839 = r619838 * r619838;
        double r619840 = r619839 * r619829;
        double r619841 = r619840 * r619829;
        double r619842 = r619837 * r619841;
        double r619843 = 1.0;
        double r619844 = r619843 - r619834;
        double r619845 = r619842 / r619844;
        double r619846 = r619832 - r619845;
        double r619847 = 4.5;
        double r619848 = r619846 - r619847;
        return r619848;
}

double f(double v, double w, double r) {
        double r619849 = 3.0;
        double r619850 = 2.0;
        double r619851 = r;
        double r619852 = r619850 / r619851;
        double r619853 = r619852 / r619851;
        double r619854 = r619849 + r619853;
        double r619855 = w;
        double r619856 = r619855 * r619851;
        double r619857 = r619856 * r619856;
        double r619858 = 0.125;
        double r619859 = 1.0;
        double r619860 = v;
        double r619861 = r619859 - r619860;
        double r619862 = r619858 / r619861;
        double r619863 = -2.0;
        double r619864 = fma(r619860, r619863, r619849);
        double r619865 = r619862 * r619864;
        double r619866 = r619857 * r619865;
        double r619867 = 4.5;
        double r619868 = r619866 + r619867;
        double r619869 = r619854 - r619868;
        return r619869;
}

Error

Bits error versus v

Bits error versus w

Bits error versus r

Derivation

  1. Initial program 12.6

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

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

    \[\leadsto \left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right) \cdot \left(\frac{0.125}{1 - v} \cdot \mathsf{fma}\left(v, -2, 3\right)\right) + 4.5\right)}\]
  5. Taylor expanded around 0 0.4

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

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

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

Reproduce

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