Average Error: 11.6 → 0.4
Time: 1.0m
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(3 - \mathsf{fma}\left(\frac{\frac{\left(w \cdot r\right) \cdot 0.125}{1 - v}}{\frac{1}{\mathsf{fma}\left(-2, v, 3\right)}}, w \cdot r, 4.5\right)\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(3 - \mathsf{fma}\left(\frac{\frac{\left(w \cdot r\right) \cdot 0.125}{1 - v}}{\frac{1}{\mathsf{fma}\left(-2, v, 3\right)}}, w \cdot r, 4.5\right)\right)
double f(double v, double w, double r) {
        double r1416991 = 3.0;
        double r1416992 = 2.0;
        double r1416993 = r;
        double r1416994 = r1416993 * r1416993;
        double r1416995 = r1416992 / r1416994;
        double r1416996 = r1416991 + r1416995;
        double r1416997 = 0.125;
        double r1416998 = v;
        double r1416999 = r1416992 * r1416998;
        double r1417000 = r1416991 - r1416999;
        double r1417001 = r1416997 * r1417000;
        double r1417002 = w;
        double r1417003 = r1417002 * r1417002;
        double r1417004 = r1417003 * r1416993;
        double r1417005 = r1417004 * r1416993;
        double r1417006 = r1417001 * r1417005;
        double r1417007 = 1.0;
        double r1417008 = r1417007 - r1416998;
        double r1417009 = r1417006 / r1417008;
        double r1417010 = r1416996 - r1417009;
        double r1417011 = 4.5;
        double r1417012 = r1417010 - r1417011;
        return r1417012;
}

double f(double v, double w, double r) {
        double r1417013 = 2.0;
        double r1417014 = r;
        double r1417015 = r1417013 / r1417014;
        double r1417016 = r1417015 / r1417014;
        double r1417017 = 3.0;
        double r1417018 = w;
        double r1417019 = r1417018 * r1417014;
        double r1417020 = 0.125;
        double r1417021 = r1417019 * r1417020;
        double r1417022 = 1.0;
        double r1417023 = v;
        double r1417024 = r1417022 - r1417023;
        double r1417025 = r1417021 / r1417024;
        double r1417026 = -2.0;
        double r1417027 = fma(r1417026, r1417023, r1417017);
        double r1417028 = r1417022 / r1417027;
        double r1417029 = r1417025 / r1417028;
        double r1417030 = 4.5;
        double r1417031 = fma(r1417029, r1417019, r1417030);
        double r1417032 = r1417017 - r1417031;
        double r1417033 = r1417016 + r1417032;
        return r1417033;
}

Error

Bits error versus v

Bits error versus w

Bits error versus r

Derivation

  1. Initial program 11.6

    \[\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.3

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

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

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

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

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

Reproduce

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