Average Error: 13.3 → 0.6
Time: 55.9s
Precision: 64
\[\left(\left(3.0 + \frac{2.0}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3.0 - 2.0 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1.0 - v}\right) - 4.5\]
\[\frac{2.0}{r \cdot r} + \left(3.0 - \sqrt[3]{\mathsf{fma}\left(\frac{r \cdot \left(0.125 \cdot w\right)}{\frac{1.0 - v}{w \cdot r}}, 3.0 - 2.0 \cdot v, 4.5\right)} \cdot \left(\sqrt[3]{\mathsf{fma}\left(\frac{r \cdot \left(0.125 \cdot w\right)}{\frac{1.0 - v}{w \cdot r}}, 3.0 - 2.0 \cdot v, 4.5\right)} \cdot \sqrt[3]{\mathsf{fma}\left(\frac{r \cdot \left(0.125 \cdot w\right)}{\frac{1.0 - v}{w \cdot r}}, 3.0 - 2.0 \cdot v, 4.5\right)}\right)\right)\]
\left(\left(3.0 + \frac{2.0}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3.0 - 2.0 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1.0 - v}\right) - 4.5
\frac{2.0}{r \cdot r} + \left(3.0 - \sqrt[3]{\mathsf{fma}\left(\frac{r \cdot \left(0.125 \cdot w\right)}{\frac{1.0 - v}{w \cdot r}}, 3.0 - 2.0 \cdot v, 4.5\right)} \cdot \left(\sqrt[3]{\mathsf{fma}\left(\frac{r \cdot \left(0.125 \cdot w\right)}{\frac{1.0 - v}{w \cdot r}}, 3.0 - 2.0 \cdot v, 4.5\right)} \cdot \sqrt[3]{\mathsf{fma}\left(\frac{r \cdot \left(0.125 \cdot w\right)}{\frac{1.0 - v}{w \cdot r}}, 3.0 - 2.0 \cdot v, 4.5\right)}\right)\right)
double f(double v, double w, double r) {
        double r1323519 = 3.0;
        double r1323520 = 2.0;
        double r1323521 = r;
        double r1323522 = r1323521 * r1323521;
        double r1323523 = r1323520 / r1323522;
        double r1323524 = r1323519 + r1323523;
        double r1323525 = 0.125;
        double r1323526 = v;
        double r1323527 = r1323520 * r1323526;
        double r1323528 = r1323519 - r1323527;
        double r1323529 = r1323525 * r1323528;
        double r1323530 = w;
        double r1323531 = r1323530 * r1323530;
        double r1323532 = r1323531 * r1323521;
        double r1323533 = r1323532 * r1323521;
        double r1323534 = r1323529 * r1323533;
        double r1323535 = 1.0;
        double r1323536 = r1323535 - r1323526;
        double r1323537 = r1323534 / r1323536;
        double r1323538 = r1323524 - r1323537;
        double r1323539 = 4.5;
        double r1323540 = r1323538 - r1323539;
        return r1323540;
}

double f(double v, double w, double r) {
        double r1323541 = 2.0;
        double r1323542 = r;
        double r1323543 = r1323542 * r1323542;
        double r1323544 = r1323541 / r1323543;
        double r1323545 = 3.0;
        double r1323546 = 0.125;
        double r1323547 = w;
        double r1323548 = r1323546 * r1323547;
        double r1323549 = r1323542 * r1323548;
        double r1323550 = 1.0;
        double r1323551 = v;
        double r1323552 = r1323550 - r1323551;
        double r1323553 = r1323547 * r1323542;
        double r1323554 = r1323552 / r1323553;
        double r1323555 = r1323549 / r1323554;
        double r1323556 = r1323541 * r1323551;
        double r1323557 = r1323545 - r1323556;
        double r1323558 = 4.5;
        double r1323559 = fma(r1323555, r1323557, r1323558);
        double r1323560 = cbrt(r1323559);
        double r1323561 = r1323560 * r1323560;
        double r1323562 = r1323560 * r1323561;
        double r1323563 = r1323545 - r1323562;
        double r1323564 = r1323544 + r1323563;
        return r1323564;
}

Error

Bits error versus v

Bits error versus w

Bits error versus r

Derivation

  1. Initial program 13.3

    \[\left(\left(3.0 + \frac{2.0}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3.0 - 2.0 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1.0 - v}\right) - 4.5\]
  2. Simplified0.4

    \[\leadsto \color{blue}{\frac{2.0}{r \cdot r} + \left(3.0 - \mathsf{fma}\left(\frac{0.125}{\frac{1.0 - v}{\left(w \cdot r\right) \cdot \left(w \cdot r\right)}}, 3.0 - 2.0 \cdot v, 4.5\right)\right)}\]
  3. Using strategy rm
  4. Applied *-un-lft-identity0.4

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

    \[\leadsto \frac{2.0}{r \cdot r} + \left(3.0 - \mathsf{fma}\left(\frac{0.125}{\color{blue}{\frac{1}{w \cdot r} \cdot \frac{1.0 - v}{w \cdot r}}}, 3.0 - 2.0 \cdot v, 4.5\right)\right)\]
  6. Applied associate-/r*0.4

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

    \[\leadsto \frac{2.0}{r \cdot r} + \left(3.0 - \mathsf{fma}\left(\frac{\color{blue}{\left(0.125 \cdot w\right) \cdot r}}{\frac{1.0 - v}{w \cdot r}}, 3.0 - 2.0 \cdot v, 4.5\right)\right)\]
  8. Using strategy rm
  9. Applied add-cube-cbrt0.6

    \[\leadsto \frac{2.0}{r \cdot r} + \left(3.0 - \color{blue}{\left(\sqrt[3]{\mathsf{fma}\left(\frac{\left(0.125 \cdot w\right) \cdot r}{\frac{1.0 - v}{w \cdot r}}, 3.0 - 2.0 \cdot v, 4.5\right)} \cdot \sqrt[3]{\mathsf{fma}\left(\frac{\left(0.125 \cdot w\right) \cdot r}{\frac{1.0 - v}{w \cdot r}}, 3.0 - 2.0 \cdot v, 4.5\right)}\right) \cdot \sqrt[3]{\mathsf{fma}\left(\frac{\left(0.125 \cdot w\right) \cdot r}{\frac{1.0 - v}{w \cdot r}}, 3.0 - 2.0 \cdot v, 4.5\right)}}\right)\]
  10. Final simplification0.6

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

Reproduce

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