Average Error: 12.2 → 0.4
Time: 24.9s
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{2}{r \cdot r}\right) - \left(4.5 + \sqrt{\frac{0.125}{\frac{1 - v}{\mathsf{fma}\left(-2, v, 3\right)}} \cdot \left(\left(r \cdot w\right) \cdot \left(r \cdot w\right)\right)} \cdot \sqrt{\frac{0.125}{\frac{1 - v}{\mathsf{fma}\left(-2, v, 3\right)}} \cdot \left(\left(r \cdot w\right) \cdot \left(r \cdot w\right)\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
\left(3 + \frac{2}{r \cdot r}\right) - \left(4.5 + \sqrt{\frac{0.125}{\frac{1 - v}{\mathsf{fma}\left(-2, v, 3\right)}} \cdot \left(\left(r \cdot w\right) \cdot \left(r \cdot w\right)\right)} \cdot \sqrt{\frac{0.125}{\frac{1 - v}{\mathsf{fma}\left(-2, v, 3\right)}} \cdot \left(\left(r \cdot w\right) \cdot \left(r \cdot w\right)\right)}\right)
double f(double v, double w, double r) {
        double r585085 = 3.0;
        double r585086 = 2.0;
        double r585087 = r;
        double r585088 = r585087 * r585087;
        double r585089 = r585086 / r585088;
        double r585090 = r585085 + r585089;
        double r585091 = 0.125;
        double r585092 = v;
        double r585093 = r585086 * r585092;
        double r585094 = r585085 - r585093;
        double r585095 = r585091 * r585094;
        double r585096 = w;
        double r585097 = r585096 * r585096;
        double r585098 = r585097 * r585087;
        double r585099 = r585098 * r585087;
        double r585100 = r585095 * r585099;
        double r585101 = 1.0;
        double r585102 = r585101 - r585092;
        double r585103 = r585100 / r585102;
        double r585104 = r585090 - r585103;
        double r585105 = 4.5;
        double r585106 = r585104 - r585105;
        return r585106;
}

double f(double v, double w, double r) {
        double r585107 = 3.0;
        double r585108 = 2.0;
        double r585109 = r;
        double r585110 = r585109 * r585109;
        double r585111 = r585108 / r585110;
        double r585112 = r585107 + r585111;
        double r585113 = 4.5;
        double r585114 = 0.125;
        double r585115 = 1.0;
        double r585116 = v;
        double r585117 = r585115 - r585116;
        double r585118 = -2.0;
        double r585119 = fma(r585118, r585116, r585107);
        double r585120 = r585117 / r585119;
        double r585121 = r585114 / r585120;
        double r585122 = w;
        double r585123 = r585109 * r585122;
        double r585124 = r585123 * r585123;
        double r585125 = r585121 * r585124;
        double r585126 = sqrt(r585125);
        double r585127 = r585126 * r585126;
        double r585128 = r585113 + r585127;
        double r585129 = r585112 - r585128;
        return r585129;
}

Error

Bits error versus v

Bits error versus w

Bits error versus r

Derivation

  1. Initial program 12.2

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

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

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

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

Reproduce

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