\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.943062400229215877571579017740335303393 \cdot 10^{176}:\\
\;\;\;\;\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\left(3 - 2 \cdot v\right) \cdot 0.125\right) \cdot \left(\left(\left(\sqrt[3]{r} \cdot \sqrt[3]{r}\right) \cdot \left(w \cdot \left(w \cdot r\right)\right)\right) \cdot \sqrt[3]{r}\right)}{1 - v}\right) - 4.5\\
\mathbf{elif}\;r \le 5.011565409680118343325145261599835434747 \cdot 10^{-14}:\\
\;\;\;\;\left(\left(\frac{\frac{2}{r}}{r} + 3\right) - \frac{\frac{\left(3 - 2 \cdot v\right) \cdot 0.125}{\frac{1 - v}{w}}}{\frac{\frac{\frac{1}{w}}{r}}{r}}\right) - 4.5\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\frac{\frac{2}{r}}{r} + 3\right) - \frac{\left(3 - 2 \cdot v\right) \cdot 0.125}{-\frac{\frac{1 - v}{w \cdot \left(w \cdot r\right)}}{-r}}\right) - 4.5\\
\end{array}double f(double v, double w, double r) {
double r41856 = 3.0;
double r41857 = 2.0;
double r41858 = r;
double r41859 = r41858 * r41858;
double r41860 = r41857 / r41859;
double r41861 = r41856 + r41860;
double r41862 = 0.125;
double r41863 = v;
double r41864 = r41857 * r41863;
double r41865 = r41856 - r41864;
double r41866 = r41862 * r41865;
double r41867 = w;
double r41868 = r41867 * r41867;
double r41869 = r41868 * r41858;
double r41870 = r41869 * r41858;
double r41871 = r41866 * r41870;
double r41872 = 1.0;
double r41873 = r41872 - r41863;
double r41874 = r41871 / r41873;
double r41875 = r41861 - r41874;
double r41876 = 4.5;
double r41877 = r41875 - r41876;
return r41877;
}
double f(double v, double w, double r) {
double r41878 = r;
double r41879 = -2.943062400229216e+176;
bool r41880 = r41878 <= r41879;
double r41881 = 3.0;
double r41882 = 2.0;
double r41883 = r41878 * r41878;
double r41884 = r41882 / r41883;
double r41885 = r41881 + r41884;
double r41886 = v;
double r41887 = r41882 * r41886;
double r41888 = r41881 - r41887;
double r41889 = 0.125;
double r41890 = r41888 * r41889;
double r41891 = cbrt(r41878);
double r41892 = r41891 * r41891;
double r41893 = w;
double r41894 = r41893 * r41878;
double r41895 = r41893 * r41894;
double r41896 = r41892 * r41895;
double r41897 = r41896 * r41891;
double r41898 = r41890 * r41897;
double r41899 = 1.0;
double r41900 = r41899 - r41886;
double r41901 = r41898 / r41900;
double r41902 = r41885 - r41901;
double r41903 = 4.5;
double r41904 = r41902 - r41903;
double r41905 = 5.0115654096801183e-14;
bool r41906 = r41878 <= r41905;
double r41907 = r41882 / r41878;
double r41908 = r41907 / r41878;
double r41909 = r41908 + r41881;
double r41910 = r41900 / r41893;
double r41911 = r41890 / r41910;
double r41912 = 1.0;
double r41913 = r41912 / r41893;
double r41914 = r41913 / r41878;
double r41915 = r41914 / r41878;
double r41916 = r41911 / r41915;
double r41917 = r41909 - r41916;
double r41918 = r41917 - r41903;
double r41919 = r41900 / r41895;
double r41920 = -r41878;
double r41921 = r41919 / r41920;
double r41922 = -r41921;
double r41923 = r41890 / r41922;
double r41924 = r41909 - r41923;
double r41925 = r41924 - r41903;
double r41926 = r41906 ? r41918 : r41925;
double r41927 = r41880 ? r41904 : r41926;
return r41927;
}



Bits error versus v



Bits error versus w



Bits error versus r
Results
if r < -2.943062400229216e+176Initial program 30.6
rmApplied add-cube-cbrt30.8
Applied associate-*r*30.8
Simplified11.2
if -2.943062400229216e+176 < r < 5.0115654096801183e-14Initial program 10.3
rmApplied associate-/l*7.2
Simplified4.0
rmApplied associate-/r*2.4
rmApplied associate-/r*2.4
rmApplied *-un-lft-identity2.4
Applied div-inv2.4
Applied times-frac2.4
Applied times-frac0.8
Applied associate-/r*0.8
Simplified0.8
if 5.0115654096801183e-14 < r Initial program 14.3
rmApplied associate-/l*7.4
Simplified3.1
rmApplied associate-/r*4.4
rmApplied associate-/r*4.4
rmApplied frac-2neg4.4
Simplified3.0
Final simplification2.3
herbie shell --seed 2019174
(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))