Average Error: 12.9 → 0.5
Time: 24.8s
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 + \frac{\frac{2}{r}}{r}\right) - \mathsf{fma}\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right), \sqrt[3]{\left(\frac{0.125}{1 - v} \cdot \left(3 - v \cdot 2\right)\right) \cdot \left(\left(\frac{0.125}{1 - v} \cdot \left(3 - v \cdot 2\right)\right) \cdot \left(\frac{0.125}{1 - v} \cdot \left(3 - v \cdot 2\right)\right)\right)}, 4.5\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
\left(3 + \frac{\frac{2}{r}}{r}\right) - \mathsf{fma}\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right), \sqrt[3]{\left(\frac{0.125}{1 - v} \cdot \left(3 - v \cdot 2\right)\right) \cdot \left(\left(\frac{0.125}{1 - v} \cdot \left(3 - v \cdot 2\right)\right) \cdot \left(\frac{0.125}{1 - v} \cdot \left(3 - v \cdot 2\right)\right)\right)}, 4.5\right)
double f(double v, double w, double r) {
        double r1386004 = 3.0;
        double r1386005 = 2.0;
        double r1386006 = r;
        double r1386007 = r1386006 * r1386006;
        double r1386008 = r1386005 / r1386007;
        double r1386009 = r1386004 + r1386008;
        double r1386010 = 0.125;
        double r1386011 = v;
        double r1386012 = r1386005 * r1386011;
        double r1386013 = r1386004 - r1386012;
        double r1386014 = r1386010 * r1386013;
        double r1386015 = w;
        double r1386016 = r1386015 * r1386015;
        double r1386017 = r1386016 * r1386006;
        double r1386018 = r1386017 * r1386006;
        double r1386019 = r1386014 * r1386018;
        double r1386020 = 1.0;
        double r1386021 = r1386020 - r1386011;
        double r1386022 = r1386019 / r1386021;
        double r1386023 = r1386009 - r1386022;
        double r1386024 = 4.5;
        double r1386025 = r1386023 - r1386024;
        return r1386025;
}

double f(double v, double w, double r) {
        double r1386026 = 3.0;
        double r1386027 = 2.0;
        double r1386028 = r;
        double r1386029 = r1386027 / r1386028;
        double r1386030 = r1386029 / r1386028;
        double r1386031 = r1386026 + r1386030;
        double r1386032 = w;
        double r1386033 = r1386032 * r1386028;
        double r1386034 = r1386033 * r1386033;
        double r1386035 = 0.125;
        double r1386036 = 1.0;
        double r1386037 = v;
        double r1386038 = r1386036 - r1386037;
        double r1386039 = r1386035 / r1386038;
        double r1386040 = r1386037 * r1386027;
        double r1386041 = r1386026 - r1386040;
        double r1386042 = r1386039 * r1386041;
        double r1386043 = r1386042 * r1386042;
        double r1386044 = r1386042 * r1386043;
        double r1386045 = cbrt(r1386044);
        double r1386046 = 4.5;
        double r1386047 = fma(r1386034, r1386045, r1386046);
        double r1386048 = r1386031 - r1386047;
        return r1386048;
}

Error

Bits error versus v

Bits error versus w

Bits error versus r

Derivation

  1. Initial program 12.9

    \[\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-/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}{1 - v} \cdot \left(3 - 2 \cdot v\right), 4.5\right)\]
  5. Using strategy rm
  6. Applied add-cbrt-cube0.5

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

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

Reproduce

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