Average Error: 12.8 → 0.4
Time: 24.0s
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(\left(3 + \frac{\frac{2}{r}}{r}\right) - \left(1 + v\right) \cdot \left(\left(w \cdot r\right) \cdot \left(\frac{\frac{\left(3 - v \cdot 2\right) \cdot 0.125}{1 + v}}{1 - v} \cdot \left(w \cdot r\right)\right)\right)\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
\left(\left(3 + \frac{\frac{2}{r}}{r}\right) - \left(1 + v\right) \cdot \left(\left(w \cdot r\right) \cdot \left(\frac{\frac{\left(3 - v \cdot 2\right) \cdot 0.125}{1 + v}}{1 - v} \cdot \left(w \cdot r\right)\right)\right)\right) - 4.5
double f(double v, double w, double r) {
        double r1390624 = 3.0;
        double r1390625 = 2.0;
        double r1390626 = r;
        double r1390627 = r1390626 * r1390626;
        double r1390628 = r1390625 / r1390627;
        double r1390629 = r1390624 + r1390628;
        double r1390630 = 0.125;
        double r1390631 = v;
        double r1390632 = r1390625 * r1390631;
        double r1390633 = r1390624 - r1390632;
        double r1390634 = r1390630 * r1390633;
        double r1390635 = w;
        double r1390636 = r1390635 * r1390635;
        double r1390637 = r1390636 * r1390626;
        double r1390638 = r1390637 * r1390626;
        double r1390639 = r1390634 * r1390638;
        double r1390640 = 1.0;
        double r1390641 = r1390640 - r1390631;
        double r1390642 = r1390639 / r1390641;
        double r1390643 = r1390629 - r1390642;
        double r1390644 = 4.5;
        double r1390645 = r1390643 - r1390644;
        return r1390645;
}

double f(double v, double w, double r) {
        double r1390646 = 3.0;
        double r1390647 = 2.0;
        double r1390648 = r;
        double r1390649 = r1390647 / r1390648;
        double r1390650 = r1390649 / r1390648;
        double r1390651 = r1390646 + r1390650;
        double r1390652 = 1.0;
        double r1390653 = v;
        double r1390654 = r1390652 + r1390653;
        double r1390655 = w;
        double r1390656 = r1390655 * r1390648;
        double r1390657 = r1390653 * r1390647;
        double r1390658 = r1390646 - r1390657;
        double r1390659 = 0.125;
        double r1390660 = r1390658 * r1390659;
        double r1390661 = r1390660 / r1390654;
        double r1390662 = r1390652 - r1390653;
        double r1390663 = r1390661 / r1390662;
        double r1390664 = r1390663 * r1390656;
        double r1390665 = r1390656 * r1390664;
        double r1390666 = r1390654 * r1390665;
        double r1390667 = r1390651 - r1390666;
        double r1390668 = 4.5;
        double r1390669 = r1390667 - r1390668;
        return r1390669;
}

Error

Bits error versus v

Bits error versus w

Bits error versus r

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

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

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

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

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

    \[\leadsto \color{blue}{\left(\left(3 + \frac{\frac{2}{r}}{r}\right) - \left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right) \cdot \frac{0.125 \cdot \left(3 - 2 \cdot v\right)}{1 - v}\right) - 4.5}\]
  10. Using strategy rm
  11. Applied flip--5.8

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

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

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

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

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

Reproduce

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