Average Error: 12.0 → 0.5
Time: 2.2m
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 + \sqrt{\frac{\frac{2}{r}}{r}} \cdot \sqrt{\frac{\frac{2}{r}}{r}}\right) - \left(4.5 + \left(\left(r \cdot w\right) \cdot \left(r \cdot w\right)\right) \cdot \frac{(v \cdot -2 + 3)_*}{\frac{1 - v}{0.125}}\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 + \sqrt{\frac{\frac{2}{r}}{r}} \cdot \sqrt{\frac{\frac{2}{r}}{r}}\right) - \left(4.5 + \left(\left(r \cdot w\right) \cdot \left(r \cdot w\right)\right) \cdot \frac{(v \cdot -2 + 3)_*}{\frac{1 - v}{0.125}}\right)
double f(double v, double w, double r) {
        double r13496424 = 3.0;
        double r13496425 = 2.0;
        double r13496426 = r;
        double r13496427 = r13496426 * r13496426;
        double r13496428 = r13496425 / r13496427;
        double r13496429 = r13496424 + r13496428;
        double r13496430 = 0.125;
        double r13496431 = v;
        double r13496432 = r13496425 * r13496431;
        double r13496433 = r13496424 - r13496432;
        double r13496434 = r13496430 * r13496433;
        double r13496435 = w;
        double r13496436 = r13496435 * r13496435;
        double r13496437 = r13496436 * r13496426;
        double r13496438 = r13496437 * r13496426;
        double r13496439 = r13496434 * r13496438;
        double r13496440 = 1.0;
        double r13496441 = r13496440 - r13496431;
        double r13496442 = r13496439 / r13496441;
        double r13496443 = r13496429 - r13496442;
        double r13496444 = 4.5;
        double r13496445 = r13496443 - r13496444;
        return r13496445;
}

double f(double v, double w, double r) {
        double r13496446 = 3.0;
        double r13496447 = 2.0;
        double r13496448 = r;
        double r13496449 = r13496447 / r13496448;
        double r13496450 = r13496449 / r13496448;
        double r13496451 = sqrt(r13496450);
        double r13496452 = r13496451 * r13496451;
        double r13496453 = r13496446 + r13496452;
        double r13496454 = 4.5;
        double r13496455 = w;
        double r13496456 = r13496448 * r13496455;
        double r13496457 = r13496456 * r13496456;
        double r13496458 = v;
        double r13496459 = -2.0;
        double r13496460 = fma(r13496458, r13496459, r13496446);
        double r13496461 = 1.0;
        double r13496462 = r13496461 - r13496458;
        double r13496463 = 0.125;
        double r13496464 = r13496462 / r13496463;
        double r13496465 = r13496460 / r13496464;
        double r13496466 = r13496457 * r13496465;
        double r13496467 = r13496454 + r13496466;
        double r13496468 = r13496453 - r13496467;
        return r13496468;
}

Error

Bits error versus v

Bits error versus w

Bits error versus r

Derivation

  1. Initial program 12.0

    \[\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) - (\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 fma-udef0.4

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

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

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

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

Reproduce

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