Average Error: 13.0 → 0.4
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\]
\[\left(3 - \mathsf{fma}\left(\frac{\sqrt{0.125}}{\frac{1 - v}{r \cdot w}} \cdot \left(\sqrt{0.125} \cdot \left(r \cdot w\right)\right), 3 - v \cdot 2, 4.5\right)\right) + \frac{2}{r \cdot 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{\sqrt{0.125}}{\frac{1 - v}{r \cdot w}} \cdot \left(\sqrt{0.125} \cdot \left(r \cdot w\right)\right), 3 - v \cdot 2, 4.5\right)\right) + \frac{2}{r \cdot r}
double f(double v, double w, double r) {
        double r1472475 = 3.0;
        double r1472476 = 2.0;
        double r1472477 = r;
        double r1472478 = r1472477 * r1472477;
        double r1472479 = r1472476 / r1472478;
        double r1472480 = r1472475 + r1472479;
        double r1472481 = 0.125;
        double r1472482 = v;
        double r1472483 = r1472476 * r1472482;
        double r1472484 = r1472475 - r1472483;
        double r1472485 = r1472481 * r1472484;
        double r1472486 = w;
        double r1472487 = r1472486 * r1472486;
        double r1472488 = r1472487 * r1472477;
        double r1472489 = r1472488 * r1472477;
        double r1472490 = r1472485 * r1472489;
        double r1472491 = 1.0;
        double r1472492 = r1472491 - r1472482;
        double r1472493 = r1472490 / r1472492;
        double r1472494 = r1472480 - r1472493;
        double r1472495 = 4.5;
        double r1472496 = r1472494 - r1472495;
        return r1472496;
}

double f(double v, double w, double r) {
        double r1472497 = 3.0;
        double r1472498 = 0.125;
        double r1472499 = sqrt(r1472498);
        double r1472500 = 1.0;
        double r1472501 = v;
        double r1472502 = r1472500 - r1472501;
        double r1472503 = r;
        double r1472504 = w;
        double r1472505 = r1472503 * r1472504;
        double r1472506 = r1472502 / r1472505;
        double r1472507 = r1472499 / r1472506;
        double r1472508 = r1472499 * r1472505;
        double r1472509 = r1472507 * r1472508;
        double r1472510 = 2.0;
        double r1472511 = r1472501 * r1472510;
        double r1472512 = r1472497 - r1472511;
        double r1472513 = 4.5;
        double r1472514 = fma(r1472509, r1472512, r1472513);
        double r1472515 = r1472497 - r1472514;
        double r1472516 = r1472503 * r1472503;
        double r1472517 = r1472510 / r1472516;
        double r1472518 = r1472515 + r1472517;
        return r1472518;
}

Error

Bits error versus v

Bits error versus w

Bits error versus r

Derivation

  1. Initial program 13.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}{\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 add-sqr-sqrt0.5

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

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

Reproduce

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