Average Error: 12.3 → 0.3
Time: 28.7s
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\]
\[\frac{\frac{2}{r}}{r} - \left(\left(4.5 - 3\right) + \left(0.125 \cdot \mathsf{fma}\left(-2, v, 3\right)\right) \cdot \frac{\left(w \cdot r\right) \cdot \left(w \cdot r\right)}{1 - v}\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
\frac{\frac{2}{r}}{r} - \left(\left(4.5 - 3\right) + \left(0.125 \cdot \mathsf{fma}\left(-2, v, 3\right)\right) \cdot \frac{\left(w \cdot r\right) \cdot \left(w \cdot r\right)}{1 - v}\right)
double f(double v, double w, double r) {
        double r887753 = 3.0;
        double r887754 = 2.0;
        double r887755 = r;
        double r887756 = r887755 * r887755;
        double r887757 = r887754 / r887756;
        double r887758 = r887753 + r887757;
        double r887759 = 0.125;
        double r887760 = v;
        double r887761 = r887754 * r887760;
        double r887762 = r887753 - r887761;
        double r887763 = r887759 * r887762;
        double r887764 = w;
        double r887765 = r887764 * r887764;
        double r887766 = r887765 * r887755;
        double r887767 = r887766 * r887755;
        double r887768 = r887763 * r887767;
        double r887769 = 1.0;
        double r887770 = r887769 - r887760;
        double r887771 = r887768 / r887770;
        double r887772 = r887758 - r887771;
        double r887773 = 4.5;
        double r887774 = r887772 - r887773;
        return r887774;
}

double f(double v, double w, double r) {
        double r887775 = 2.0;
        double r887776 = r;
        double r887777 = r887775 / r887776;
        double r887778 = r887777 / r887776;
        double r887779 = 4.5;
        double r887780 = 3.0;
        double r887781 = r887779 - r887780;
        double r887782 = 0.125;
        double r887783 = -2.0;
        double r887784 = v;
        double r887785 = fma(r887783, r887784, r887780);
        double r887786 = r887782 * r887785;
        double r887787 = w;
        double r887788 = r887787 * r887776;
        double r887789 = r887788 * r887788;
        double r887790 = 1.0;
        double r887791 = r887790 - r887784;
        double r887792 = r887789 / r887791;
        double r887793 = r887786 * r887792;
        double r887794 = r887781 + r887793;
        double r887795 = r887778 - r887794;
        return r887795;
}

Error

Bits error versus v

Bits error versus w

Bits error versus r

Derivation

  1. Initial program 12.3

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

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

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

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

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

    \[\leadsto \frac{\frac{2}{r}}{r} - \left(\color{blue}{\left(\left(0.125 \cdot \mathsf{fma}\left(-2, v, 3\right)\right) \cdot \frac{1}{1 - v}\right)} \cdot \left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right) + \left(4.5 - 3\right)\right)\]
  12. Applied associate-*l*0.3

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

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

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

Reproduce

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