Average Error: 12.8 → 0.4
Time: 52.3s
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 - \mathsf{fma}\left(\frac{0.125}{\frac{1 - v}{w \cdot r}} \cdot \left(w \cdot r\right), 3 - v \cdot 2, 4.5\right)\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(3 - \mathsf{fma}\left(\frac{0.125}{\frac{1 - v}{w \cdot r}} \cdot \left(w \cdot r\right), 3 - v \cdot 2, 4.5\right)\right) + \frac{\frac{2}{r}}{r}
double f(double v, double w, double r) {
        double r1384319 = 3.0;
        double r1384320 = 2.0;
        double r1384321 = r;
        double r1384322 = r1384321 * r1384321;
        double r1384323 = r1384320 / r1384322;
        double r1384324 = r1384319 + r1384323;
        double r1384325 = 0.125;
        double r1384326 = v;
        double r1384327 = r1384320 * r1384326;
        double r1384328 = r1384319 - r1384327;
        double r1384329 = r1384325 * r1384328;
        double r1384330 = w;
        double r1384331 = r1384330 * r1384330;
        double r1384332 = r1384331 * r1384321;
        double r1384333 = r1384332 * r1384321;
        double r1384334 = r1384329 * r1384333;
        double r1384335 = 1.0;
        double r1384336 = r1384335 - r1384326;
        double r1384337 = r1384334 / r1384336;
        double r1384338 = r1384324 - r1384337;
        double r1384339 = 4.5;
        double r1384340 = r1384338 - r1384339;
        return r1384340;
}

double f(double v, double w, double r) {
        double r1384341 = 3.0;
        double r1384342 = 0.125;
        double r1384343 = 1.0;
        double r1384344 = v;
        double r1384345 = r1384343 - r1384344;
        double r1384346 = w;
        double r1384347 = r;
        double r1384348 = r1384346 * r1384347;
        double r1384349 = r1384345 / r1384348;
        double r1384350 = r1384342 / r1384349;
        double r1384351 = r1384350 * r1384348;
        double r1384352 = 2.0;
        double r1384353 = r1384344 * r1384352;
        double r1384354 = r1384341 - r1384353;
        double r1384355 = 4.5;
        double r1384356 = fma(r1384351, r1384354, r1384355);
        double r1384357 = r1384341 - r1384356;
        double r1384358 = r1384352 / r1384347;
        double r1384359 = r1384358 / r1384347;
        double r1384360 = r1384357 + r1384359;
        return r1384360;
}

Error

Bits error versus v

Bits error versus w

Bits error versus r

Derivation

  1. Initial program 12.8

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

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

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

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

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

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

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

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

Reproduce

herbie shell --seed 2019168 +o rules:numerics
(FPCore (v w r)
  :name "Rosa's TurbineBenchmark"
  (- (- (+ 3.0 (/ 2.0 (* r r))) (/ (* (* 0.125 (- 3.0 (* 2.0 v))) (* (* (* w w) r) r)) (- 1.0 v))) 4.5))