\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(\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right) \cdot \left(\frac{0.125}{1 - v} \cdot \mathsf{fma}\left(v, -2, 3\right)\right) + 4.5\right)double f(double v, double w, double r) {
double r619827 = 3.0;
double r619828 = 2.0;
double r619829 = r;
double r619830 = r619829 * r619829;
double r619831 = r619828 / r619830;
double r619832 = r619827 + r619831;
double r619833 = 0.125;
double r619834 = v;
double r619835 = r619828 * r619834;
double r619836 = r619827 - r619835;
double r619837 = r619833 * r619836;
double r619838 = w;
double r619839 = r619838 * r619838;
double r619840 = r619839 * r619829;
double r619841 = r619840 * r619829;
double r619842 = r619837 * r619841;
double r619843 = 1.0;
double r619844 = r619843 - r619834;
double r619845 = r619842 / r619844;
double r619846 = r619832 - r619845;
double r619847 = 4.5;
double r619848 = r619846 - r619847;
return r619848;
}
double f(double v, double w, double r) {
double r619849 = 3.0;
double r619850 = 2.0;
double r619851 = r;
double r619852 = r619850 / r619851;
double r619853 = r619852 / r619851;
double r619854 = r619849 + r619853;
double r619855 = w;
double r619856 = r619855 * r619851;
double r619857 = r619856 * r619856;
double r619858 = 0.125;
double r619859 = 1.0;
double r619860 = v;
double r619861 = r619859 - r619860;
double r619862 = r619858 / r619861;
double r619863 = -2.0;
double r619864 = fma(r619860, r619863, r619849);
double r619865 = r619862 * r619864;
double r619866 = r619857 * r619865;
double r619867 = 4.5;
double r619868 = r619866 + r619867;
double r619869 = r619854 - r619868;
return r619869;
}



Bits error versus v



Bits error versus w



Bits error versus r
Initial program 12.6
Simplified0.4
rmApplied fma-udef0.4
Taylor expanded around 0 0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2019128 +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))