Average Error: 12.2 → 0.3
Time: 27.4s
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\]
\[\frac{\frac{2}{r}}{r} - \mathsf{fma}\left(0.125 \cdot \left(\frac{\mathsf{fma}\left(v, -2, 3\right)}{1 - v} \cdot \left(r \cdot w\right)\right), r \cdot w, 4.5 - 3\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
\frac{\frac{2}{r}}{r} - \mathsf{fma}\left(0.125 \cdot \left(\frac{\mathsf{fma}\left(v, -2, 3\right)}{1 - v} \cdot \left(r \cdot w\right)\right), r \cdot w, 4.5 - 3\right)
double f(double v, double w, double r) {
        double r1381282 = 3.0;
        double r1381283 = 2.0;
        double r1381284 = r;
        double r1381285 = r1381284 * r1381284;
        double r1381286 = r1381283 / r1381285;
        double r1381287 = r1381282 + r1381286;
        double r1381288 = 0.125;
        double r1381289 = v;
        double r1381290 = r1381283 * r1381289;
        double r1381291 = r1381282 - r1381290;
        double r1381292 = r1381288 * r1381291;
        double r1381293 = w;
        double r1381294 = r1381293 * r1381293;
        double r1381295 = r1381294 * r1381284;
        double r1381296 = r1381295 * r1381284;
        double r1381297 = r1381292 * r1381296;
        double r1381298 = 1.0;
        double r1381299 = r1381298 - r1381289;
        double r1381300 = r1381297 / r1381299;
        double r1381301 = r1381287 - r1381300;
        double r1381302 = 4.5;
        double r1381303 = r1381301 - r1381302;
        return r1381303;
}

double f(double v, double w, double r) {
        double r1381304 = 2.0;
        double r1381305 = r;
        double r1381306 = r1381304 / r1381305;
        double r1381307 = r1381306 / r1381305;
        double r1381308 = 0.125;
        double r1381309 = v;
        double r1381310 = -2.0;
        double r1381311 = 3.0;
        double r1381312 = fma(r1381309, r1381310, r1381311);
        double r1381313 = 1.0;
        double r1381314 = r1381313 - r1381309;
        double r1381315 = r1381312 / r1381314;
        double r1381316 = w;
        double r1381317 = r1381305 * r1381316;
        double r1381318 = r1381315 * r1381317;
        double r1381319 = r1381308 * r1381318;
        double r1381320 = 4.5;
        double r1381321 = r1381320 - r1381311;
        double r1381322 = fma(r1381319, r1381317, r1381321);
        double r1381323 = r1381307 - r1381322;
        return r1381323;
}

Error

Bits error versus v

Bits error versus w

Bits error versus r

Derivation

  1. Initial program 12.2

    \[\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(\mathsf{fma}\left(\frac{\mathsf{fma}\left(-2, v, 3\right)}{1 - v}, \left(w \cdot r\right) \cdot \left(0.125 \cdot \left(w \cdot r\right)\right), 4.5\right) - 3\right)}\]
  3. Using strategy rm
  4. Applied add-cube-cbrt0.3

    \[\leadsto \frac{2}{r \cdot r} - \left(\mathsf{fma}\left(\frac{\mathsf{fma}\left(-2, v, 3\right)}{1 - v}, \left(w \cdot r\right) \cdot \left(0.125 \cdot \left(w \cdot r\right)\right), 4.5\right) - \color{blue}{\left(\sqrt[3]{3} \cdot \sqrt[3]{3}\right) \cdot \sqrt[3]{3}}\right)\]
  5. Applied add-sqr-sqrt0.9

    \[\leadsto \frac{2}{r \cdot r} - \left(\color{blue}{\sqrt{\mathsf{fma}\left(\frac{\mathsf{fma}\left(-2, v, 3\right)}{1 - v}, \left(w \cdot r\right) \cdot \left(0.125 \cdot \left(w \cdot r\right)\right), 4.5\right)} \cdot \sqrt{\mathsf{fma}\left(\frac{\mathsf{fma}\left(-2, v, 3\right)}{1 - v}, \left(w \cdot r\right) \cdot \left(0.125 \cdot \left(w \cdot r\right)\right), 4.5\right)}} - \left(\sqrt[3]{3} \cdot \sqrt[3]{3}\right) \cdot \sqrt[3]{3}\right)\]
  6. Applied prod-diff0.9

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

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

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

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

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

Reproduce

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