\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\begin{array}{l}
\mathbf{if}\;r \le -1.180726222619468209881332366838631950923 \cdot 10^{153} \lor \neg \left(r \le 6.830905623761732335167628795725702116653 \cdot 10^{-19}\right):\\
\;\;\;\;\left(\left(3 + \frac{\frac{2}{r}}{r}\right) - \frac{\frac{0.125}{\frac{1 - v}{3 - 2 \cdot v}}}{\frac{\frac{\frac{1}{w}}{r \cdot w}}{r}}\right) - 4.5\\
\mathbf{else}:\\
\;\;\;\;\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(3 - 2 \cdot v\right) \cdot 0.125}{\frac{1 - v}{\left(r \cdot \left(r \cdot w\right)\right) \cdot w}}\right) - 4.5\\
\end{array}double f(double v, double w, double r) {
double r174292 = 3.0;
double r174293 = 2.0;
double r174294 = r;
double r174295 = r174294 * r174294;
double r174296 = r174293 / r174295;
double r174297 = r174292 + r174296;
double r174298 = 0.125;
double r174299 = v;
double r174300 = r174293 * r174299;
double r174301 = r174292 - r174300;
double r174302 = r174298 * r174301;
double r174303 = w;
double r174304 = r174303 * r174303;
double r174305 = r174304 * r174294;
double r174306 = r174305 * r174294;
double r174307 = r174302 * r174306;
double r174308 = 1.0;
double r174309 = r174308 - r174299;
double r174310 = r174307 / r174309;
double r174311 = r174297 - r174310;
double r174312 = 4.5;
double r174313 = r174311 - r174312;
return r174313;
}
double f(double v, double w, double r) {
double r174314 = r;
double r174315 = -1.1807262226194682e+153;
bool r174316 = r174314 <= r174315;
double r174317 = 6.830905623761732e-19;
bool r174318 = r174314 <= r174317;
double r174319 = !r174318;
bool r174320 = r174316 || r174319;
double r174321 = 3.0;
double r174322 = 2.0;
double r174323 = r174322 / r174314;
double r174324 = r174323 / r174314;
double r174325 = r174321 + r174324;
double r174326 = 0.125;
double r174327 = 1.0;
double r174328 = v;
double r174329 = r174327 - r174328;
double r174330 = r174322 * r174328;
double r174331 = r174321 - r174330;
double r174332 = r174329 / r174331;
double r174333 = r174326 / r174332;
double r174334 = 1.0;
double r174335 = w;
double r174336 = r174334 / r174335;
double r174337 = r174314 * r174335;
double r174338 = r174336 / r174337;
double r174339 = r174338 / r174314;
double r174340 = r174333 / r174339;
double r174341 = r174325 - r174340;
double r174342 = 4.5;
double r174343 = r174341 - r174342;
double r174344 = r174314 * r174314;
double r174345 = r174322 / r174344;
double r174346 = r174321 + r174345;
double r174347 = r174331 * r174326;
double r174348 = r174314 * r174337;
double r174349 = r174348 * r174335;
double r174350 = r174329 / r174349;
double r174351 = r174347 / r174350;
double r174352 = r174346 - r174351;
double r174353 = r174352 - r174342;
double r174354 = r174320 ? r174343 : r174353;
return r174354;
}



Bits error versus v



Bits error versus w



Bits error versus r
Results
if r < -1.1807262226194682e+153 or 6.830905623761732e-19 < r Initial program 17.7
rmApplied associate-/l*11.0
Simplified3.7
rmApplied *-un-lft-identity3.7
Applied div-inv3.7
Applied times-frac0.3
Applied associate-/r*0.3
Simplified0.3
rmApplied associate-/r*0.3
rmApplied associate-/r*0.3
if -1.1807262226194682e+153 < r < 6.830905623761732e-19Initial program 9.6
rmApplied associate-/l*7.0
Simplified3.6
rmApplied div-inv3.6
Applied associate-/l*3.6
Simplified0.3
Final simplification0.3
herbie shell --seed 2019195
(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))