\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 -2.529071314108289553216263398312709726481 \cdot 10^{188} \lor \neg \left(r \le 5.21395643917214503895832514072602417905 \cdot 10^{209}\right):\\
\;\;\;\;\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\frac{0.125}{\frac{1 - v}{3 - 2 \cdot v}}}{\frac{\frac{1}{\left(r \cdot w\right) \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}{\left(1 - v\right) \cdot \frac{\frac{1}{w}}{r \cdot \left(r \cdot w\right)}}\right) - 4.5\\
\end{array}double f(double v, double w, double r) {
double r61282 = 3.0;
double r61283 = 2.0;
double r61284 = r;
double r61285 = r61284 * r61284;
double r61286 = r61283 / r61285;
double r61287 = r61282 + r61286;
double r61288 = 0.125;
double r61289 = v;
double r61290 = r61283 * r61289;
double r61291 = r61282 - r61290;
double r61292 = r61288 * r61291;
double r61293 = w;
double r61294 = r61293 * r61293;
double r61295 = r61294 * r61284;
double r61296 = r61295 * r61284;
double r61297 = r61292 * r61296;
double r61298 = 1.0;
double r61299 = r61298 - r61289;
double r61300 = r61297 / r61299;
double r61301 = r61287 - r61300;
double r61302 = 4.5;
double r61303 = r61301 - r61302;
return r61303;
}
double f(double v, double w, double r) {
double r61304 = r;
double r61305 = -2.5290713141082896e+188;
bool r61306 = r61304 <= r61305;
double r61307 = 5.213956439172145e+209;
bool r61308 = r61304 <= r61307;
double r61309 = !r61308;
bool r61310 = r61306 || r61309;
double r61311 = 3.0;
double r61312 = 2.0;
double r61313 = r61304 * r61304;
double r61314 = r61312 / r61313;
double r61315 = r61311 + r61314;
double r61316 = 0.125;
double r61317 = 1.0;
double r61318 = v;
double r61319 = r61317 - r61318;
double r61320 = r61312 * r61318;
double r61321 = r61311 - r61320;
double r61322 = r61319 / r61321;
double r61323 = r61316 / r61322;
double r61324 = 1.0;
double r61325 = w;
double r61326 = r61304 * r61325;
double r61327 = r61326 * r61325;
double r61328 = r61324 / r61327;
double r61329 = r61328 / r61304;
double r61330 = r61323 / r61329;
double r61331 = r61315 - r61330;
double r61332 = 4.5;
double r61333 = r61331 - r61332;
double r61334 = r61321 * r61316;
double r61335 = r61324 / r61325;
double r61336 = r61304 * r61326;
double r61337 = r61335 / r61336;
double r61338 = r61319 * r61337;
double r61339 = r61334 / r61338;
double r61340 = r61315 - r61339;
double r61341 = r61340 - r61332;
double r61342 = r61310 ? r61333 : r61341;
return r61342;
}



Bits error versus v



Bits error versus w



Bits error versus r
Results
if r < -2.5290713141082896e+188 or 5.213956439172145e+209 < r Initial program 35.0
rmApplied associate-/l*27.7
Simplified7.1
rmApplied *-un-lft-identity7.1
Applied div-inv7.1
Applied times-frac0.4
Applied associate-/r*0.4
Simplified0.4
if -2.5290713141082896e+188 < r < 5.213956439172145e+209Initial program 9.6
rmApplied associate-/l*5.6
Simplified3.4
rmApplied *-un-lft-identity3.4
Applied div-inv3.4
Applied times-frac3.0
Simplified3.0
Simplified0.7
Final simplification0.6
herbie shell --seed 2019194
(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))