\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) - \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 r24604 = 3.0;
double r24605 = 2.0;
double r24606 = r;
double r24607 = r24606 * r24606;
double r24608 = r24605 / r24607;
double r24609 = r24604 + r24608;
double r24610 = 0.125;
double r24611 = v;
double r24612 = r24605 * r24611;
double r24613 = r24604 - r24612;
double r24614 = r24610 * r24613;
double r24615 = w;
double r24616 = r24615 * r24615;
double r24617 = r24616 * r24606;
double r24618 = r24617 * r24606;
double r24619 = r24614 * r24618;
double r24620 = 1.0;
double r24621 = r24620 - r24611;
double r24622 = r24619 / r24621;
double r24623 = r24609 - r24622;
double r24624 = 4.5;
double r24625 = r24623 - r24624;
return r24625;
}
double f(double v, double w, double r) {
double r24626 = 3.0;
double r24627 = 2.0;
double r24628 = r;
double r24629 = r24627 / r24628;
double r24630 = r24629 / r24628;
double r24631 = r24626 + r24630;
double r24632 = 0.125;
double r24633 = v;
double r24634 = r24627 * r24633;
double r24635 = r24626 - r24634;
double r24636 = r24632 * r24635;
double r24637 = 1.0;
double r24638 = r24637 - r24633;
double r24639 = r24636 / r24638;
double r24640 = w;
double r24641 = r24640 * r24628;
double r24642 = fabs(r24641);
double r24643 = r24642 * r24642;
double r24644 = 4.5;
double r24645 = fma(r24639, r24643, r24644);
double r24646 = r24631 - r24645;
return r24646;
}



Bits error versus v



Bits error versus w



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