\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{1}{\frac{r}{\frac{2}{r}}}\right) - \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)double f(double v, double w, double r) {
double r27967 = 3.0;
double r27968 = 2.0;
double r27969 = r;
double r27970 = r27969 * r27969;
double r27971 = r27968 / r27970;
double r27972 = r27967 + r27971;
double r27973 = 0.125;
double r27974 = v;
double r27975 = r27968 * r27974;
double r27976 = r27967 - r27975;
double r27977 = r27973 * r27976;
double r27978 = w;
double r27979 = r27978 * r27978;
double r27980 = r27979 * r27969;
double r27981 = r27980 * r27969;
double r27982 = r27977 * r27981;
double r27983 = 1.0;
double r27984 = r27983 - r27974;
double r27985 = r27982 / r27984;
double r27986 = r27972 - r27985;
double r27987 = 4.5;
double r27988 = r27986 - r27987;
return r27988;
}
double f(double v, double w, double r) {
double r27989 = 3.0;
double r27990 = 1.0;
double r27991 = r;
double r27992 = 2.0;
double r27993 = r27992 / r27991;
double r27994 = r27991 / r27993;
double r27995 = r27990 / r27994;
double r27996 = r27989 + r27995;
double r27997 = 0.125;
double r27998 = v;
double r27999 = r27992 * r27998;
double r28000 = r27989 - r27999;
double r28001 = r27997 * r28000;
double r28002 = 1.0;
double r28003 = r28002 - r27998;
double r28004 = r28001 / r28003;
double r28005 = w;
double r28006 = r28005 * r27991;
double r28007 = fabs(r28006);
double r28008 = r28007 * r28007;
double r28009 = 4.5;
double r28010 = fma(r28004, r28008, r28009);
double r28011 = r27996 - r28010;
return r28011;
}



Bits error versus v



Bits error versus w



Bits error versus r
Initial program 12.8
Simplified8.5
rmApplied add-sqr-sqrt8.6
Simplified8.5
Simplified0.4
rmApplied associate-/r*0.4
rmApplied clear-num0.4
Final simplification0.4
herbie shell --seed 2019323 +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))