\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(\mathsf{fma}\left(\frac{0.125 \cdot \left(3 - 2 \cdot v\right)}{1 - v}, \left|w \cdot r\right| \cdot \left|w \cdot r\right|, 4.5\right) - 3\right)double f(double v, double w, double r) {
double r19242 = 3.0;
double r19243 = 2.0;
double r19244 = r;
double r19245 = r19244 * r19244;
double r19246 = r19243 / r19245;
double r19247 = r19242 + r19246;
double r19248 = 0.125;
double r19249 = v;
double r19250 = r19243 * r19249;
double r19251 = r19242 - r19250;
double r19252 = r19248 * r19251;
double r19253 = w;
double r19254 = r19253 * r19253;
double r19255 = r19254 * r19244;
double r19256 = r19255 * r19244;
double r19257 = r19252 * r19256;
double r19258 = 1.0;
double r19259 = r19258 - r19249;
double r19260 = r19257 / r19259;
double r19261 = r19247 - r19260;
double r19262 = 4.5;
double r19263 = r19261 - r19262;
return r19263;
}
double f(double v, double w, double r) {
double r19264 = 2.0;
double r19265 = r;
double r19266 = r19264 / r19265;
double r19267 = r19266 / r19265;
double r19268 = 0.125;
double r19269 = 3.0;
double r19270 = v;
double r19271 = r19264 * r19270;
double r19272 = r19269 - r19271;
double r19273 = r19268 * r19272;
double r19274 = 1.0;
double r19275 = r19274 - r19270;
double r19276 = r19273 / r19275;
double r19277 = w;
double r19278 = r19277 * r19265;
double r19279 = fabs(r19278);
double r19280 = r19279 * r19279;
double r19281 = 4.5;
double r19282 = fma(r19276, r19280, r19281);
double r19283 = r19282 - r19269;
double r19284 = r19267 - r19283;
return r19284;
}



Bits error versus v



Bits error versus w



Bits error versus r
Initial program 12.9
Simplified8.7
rmApplied add-sqr-sqrt8.7
Simplified8.7
Simplified0.3
rmApplied associate-/r*0.3
Final simplification0.3
herbie shell --seed 2020064 +o rules:numerics
(FPCore (v w r)
:name "Rosa's TurbineBenchmark"
:precision binary64
(- (- (+ 3 (/ 2 (* r r))) (/ (* (* 0.125 (- 3 (* 2 v))) (* (* (* w w) r) r)) (- 1 v))) 4.5))