\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(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right), \left(\frac{\mathsf{fma}\left(v, -2, 3\right)}{\frac{1 - v}{0.125}}\right), 4.5\right)double f(double v, double w, double r) {
double r897273 = 3.0;
double r897274 = 2.0;
double r897275 = r;
double r897276 = r897275 * r897275;
double r897277 = r897274 / r897276;
double r897278 = r897273 + r897277;
double r897279 = 0.125;
double r897280 = v;
double r897281 = r897274 * r897280;
double r897282 = r897273 - r897281;
double r897283 = r897279 * r897282;
double r897284 = w;
double r897285 = r897284 * r897284;
double r897286 = r897285 * r897275;
double r897287 = r897286 * r897275;
double r897288 = r897283 * r897287;
double r897289 = 1.0;
double r897290 = r897289 - r897280;
double r897291 = r897288 / r897290;
double r897292 = r897278 - r897291;
double r897293 = 4.5;
double r897294 = r897292 - r897293;
return r897294;
}
double f(double v, double w, double r) {
double r897295 = 3.0;
double r897296 = 2.0;
double r897297 = r;
double r897298 = r897296 / r897297;
double r897299 = r897298 / r897297;
double r897300 = r897295 + r897299;
double r897301 = w;
double r897302 = r897301 * r897297;
double r897303 = r897302 * r897302;
double r897304 = v;
double r897305 = -2.0;
double r897306 = fma(r897304, r897305, r897295);
double r897307 = 1.0;
double r897308 = r897307 - r897304;
double r897309 = 0.125;
double r897310 = r897308 / r897309;
double r897311 = r897306 / r897310;
double r897312 = 4.5;
double r897313 = fma(r897303, r897311, r897312);
double r897314 = r897300 - r897313;
return r897314;
}



Bits error versus v



Bits error versus w



Bits error versus r
Initial program 12.5
Simplified0.4
Taylor expanded around 0 0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2019130 +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))