Average Error: 12.7 → 0.4
Time: 32.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\]
\[\mathsf{fma}\left({\left(\left|w \cdot r\right|\right)}^{2}, -\frac{0.125 \cdot \left(3 - 2 \cdot v\right)}{1 - v}, 3 + \frac{\frac{2}{r}}{r}\right) - 4.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
\mathsf{fma}\left({\left(\left|w \cdot r\right|\right)}^{2}, -\frac{0.125 \cdot \left(3 - 2 \cdot v\right)}{1 - v}, 3 + \frac{\frac{2}{r}}{r}\right) - 4.5
double f(double v, double w, double r) {
        double r27377 = 3.0;
        double r27378 = 2.0;
        double r27379 = r;
        double r27380 = r27379 * r27379;
        double r27381 = r27378 / r27380;
        double r27382 = r27377 + r27381;
        double r27383 = 0.125;
        double r27384 = v;
        double r27385 = r27378 * r27384;
        double r27386 = r27377 - r27385;
        double r27387 = r27383 * r27386;
        double r27388 = w;
        double r27389 = r27388 * r27388;
        double r27390 = r27389 * r27379;
        double r27391 = r27390 * r27379;
        double r27392 = r27387 * r27391;
        double r27393 = 1.0;
        double r27394 = r27393 - r27384;
        double r27395 = r27392 / r27394;
        double r27396 = r27382 - r27395;
        double r27397 = 4.5;
        double r27398 = r27396 - r27397;
        return r27398;
}

double f(double v, double w, double r) {
        double r27399 = w;
        double r27400 = r;
        double r27401 = r27399 * r27400;
        double r27402 = fabs(r27401);
        double r27403 = 2.0;
        double r27404 = pow(r27402, r27403);
        double r27405 = 0.125;
        double r27406 = 3.0;
        double r27407 = 2.0;
        double r27408 = v;
        double r27409 = r27407 * r27408;
        double r27410 = r27406 - r27409;
        double r27411 = r27405 * r27410;
        double r27412 = 1.0;
        double r27413 = r27412 - r27408;
        double r27414 = r27411 / r27413;
        double r27415 = -r27414;
        double r27416 = r27407 / r27400;
        double r27417 = r27416 / r27400;
        double r27418 = r27406 + r27417;
        double r27419 = fma(r27404, r27415, r27418);
        double r27420 = 4.5;
        double r27421 = r27419 - r27420;
        return r27421;
}

Error

Bits error versus v

Bits error versus w

Bits error versus r

Derivation

  1. Initial program 12.7

    \[\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. Simplified8.6

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

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

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

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

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

    \[\leadsto \left(3 + \frac{\frac{2}{r}}{r}\right) - \color{blue}{\left(\frac{0.125 \cdot \left(3 - 2 \cdot v\right)}{1 - v} \cdot \left(\left|r \cdot w\right| \cdot \left|r \cdot w\right|\right) + 4.5\right)}\]
  11. Applied associate--r+0.4

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

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

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

Reproduce

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