\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) - \left(4.5 + \left(\frac{\sqrt{0.125}}{\frac{1 - v}{\sqrt[3]{\mathsf{fma}\left(-2, v, 3\right)}}} \cdot \left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)\right) \cdot \frac{\sqrt{0.125}}{\frac{1}{\sqrt[3]{\mathsf{fma}\left(-2, v, 3\right)} \cdot \sqrt[3]{\mathsf{fma}\left(-2, v, 3\right)}}}\right)double f(double v, double w, double r) {
double r989970 = 3.0;
double r989971 = 2.0;
double r989972 = r;
double r989973 = r989972 * r989972;
double r989974 = r989971 / r989973;
double r989975 = r989970 + r989974;
double r989976 = 0.125;
double r989977 = v;
double r989978 = r989971 * r989977;
double r989979 = r989970 - r989978;
double r989980 = r989976 * r989979;
double r989981 = w;
double r989982 = r989981 * r989981;
double r989983 = r989982 * r989972;
double r989984 = r989983 * r989972;
double r989985 = r989980 * r989984;
double r989986 = 1.0;
double r989987 = r989986 - r989977;
double r989988 = r989985 / r989987;
double r989989 = r989975 - r989988;
double r989990 = 4.5;
double r989991 = r989989 - r989990;
return r989991;
}
double f(double v, double w, double r) {
double r989992 = 3.0;
double r989993 = 2.0;
double r989994 = r;
double r989995 = r989993 / r989994;
double r989996 = r989995 / r989994;
double r989997 = r989992 + r989996;
double r989998 = 4.5;
double r989999 = 0.125;
double r990000 = sqrt(r989999);
double r990001 = 1.0;
double r990002 = v;
double r990003 = r990001 - r990002;
double r990004 = -2.0;
double r990005 = fma(r990004, r990002, r989992);
double r990006 = cbrt(r990005);
double r990007 = r990003 / r990006;
double r990008 = r990000 / r990007;
double r990009 = w;
double r990010 = r990009 * r989994;
double r990011 = r990010 * r990010;
double r990012 = r990008 * r990011;
double r990013 = r990006 * r990006;
double r990014 = r990001 / r990013;
double r990015 = r990000 / r990014;
double r990016 = r990012 * r990015;
double r990017 = r989998 + r990016;
double r990018 = r989997 - r990017;
return r990018;
}



Bits error versus v



Bits error versus w



Bits error versus r
Initial program 11.6
Simplified0.4
Taylor expanded around -inf 0.4
Simplified0.4
rmApplied fma-udef0.4
rmApplied add-cube-cbrt0.5
Applied *-un-lft-identity0.5
Applied *-un-lft-identity0.5
Applied distribute-lft-out--0.5
Applied times-frac0.6
Applied add-sqr-sqrt0.6
Applied times-frac0.5
Applied associate-*l*0.5
Final simplification0.5
herbie shell --seed 2019151 +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))