x1 + \left(\left(\left(\left(\left(\left(\left(2 \cdot x1\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right) \cdot \left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 3\right) + \left(x1 \cdot x1\right) \cdot \left(4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 6\right)\right) \cdot \left(x1 \cdot x1 + 1\right) + \left(\left(3 \cdot x1\right) \cdot x1\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right) + \left(x1 \cdot x1\right) \cdot x1\right) + x1\right) + 3 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 - 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right)x1 + \left(3 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 - x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} + \left(x1 + \left(x1 \cdot \left(x1 \cdot x1\right) + \left(\left(1 + x1 \cdot x1\right) \cdot \left(\left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 3\right) \cdot \left(\left(x1 \cdot 2\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1}\right) + \left(\left(x1 \cdot \mathsf{fma}\left(4, \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1}, \left(-\sqrt{6}\right) \cdot \sqrt{6}\right)\right) \cdot x1 + 0 \cdot \left(x1 \cdot x1\right)\right)\right) + \left(\left(3 \cdot x1\right) \cdot x1\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1}\right)\right)\right)\right)double f(double x1, double x2) {
double r985961 = x1;
double r985962 = 2.0;
double r985963 = r985962 * r985961;
double r985964 = 3.0;
double r985965 = r985964 * r985961;
double r985966 = r985965 * r985961;
double r985967 = x2;
double r985968 = r985962 * r985967;
double r985969 = r985966 + r985968;
double r985970 = r985969 - r985961;
double r985971 = r985961 * r985961;
double r985972 = 1.0;
double r985973 = r985971 + r985972;
double r985974 = r985970 / r985973;
double r985975 = r985963 * r985974;
double r985976 = r985974 - r985964;
double r985977 = r985975 * r985976;
double r985978 = 4.0;
double r985979 = r985978 * r985974;
double r985980 = 6.0;
double r985981 = r985979 - r985980;
double r985982 = r985971 * r985981;
double r985983 = r985977 + r985982;
double r985984 = r985983 * r985973;
double r985985 = r985966 * r985974;
double r985986 = r985984 + r985985;
double r985987 = r985971 * r985961;
double r985988 = r985986 + r985987;
double r985989 = r985988 + r985961;
double r985990 = r985966 - r985968;
double r985991 = r985990 - r985961;
double r985992 = r985991 / r985973;
double r985993 = r985964 * r985992;
double r985994 = r985989 + r985993;
double r985995 = r985961 + r985994;
return r985995;
}
double f(double x1, double x2) {
double r985996 = x1;
double r985997 = 3.0;
double r985998 = r985997 * r985996;
double r985999 = r985998 * r985996;
double r986000 = x2;
double r986001 = 2.0;
double r986002 = r986000 * r986001;
double r986003 = r985999 - r986002;
double r986004 = r986003 - r985996;
double r986005 = 1.0;
double r986006 = r985996 * r985996;
double r986007 = r986005 + r986006;
double r986008 = r986004 / r986007;
double r986009 = r985997 * r986008;
double r986010 = r985996 * r986006;
double r986011 = r985999 + r986002;
double r986012 = r986011 - r985996;
double r986013 = r986012 / r986007;
double r986014 = r986013 - r985997;
double r986015 = r985996 * r986001;
double r986016 = r986015 * r986013;
double r986017 = r986014 * r986016;
double r986018 = 4.0;
double r986019 = 6.0;
double r986020 = sqrt(r986019);
double r986021 = -r986020;
double r986022 = r986021 * r986020;
double r986023 = fma(r986018, r986013, r986022);
double r986024 = r985996 * r986023;
double r986025 = r986024 * r985996;
double r986026 = 0.0;
double r986027 = r986026 * r986006;
double r986028 = r986025 + r986027;
double r986029 = r986017 + r986028;
double r986030 = r986007 * r986029;
double r986031 = r985999 * r986013;
double r986032 = r986030 + r986031;
double r986033 = r986010 + r986032;
double r986034 = r985996 + r986033;
double r986035 = r986009 + r986034;
double r986036 = r985996 + r986035;
return r986036;
}



Bits error versus x1



Bits error versus x2
Initial program 0.5
rmApplied add-sqr-sqrt0.6
Applied prod-diff0.6
Applied distribute-rgt-in0.6
Simplified0.6
rmApplied associate-*r*0.6
Final simplification0.6
herbie shell --seed 2019151 +o rules:numerics
(FPCore (x1 x2)
:name "Rosa's FloatVsDoubleBenchmark"
(+ x1 (+ (+ (+ (+ (* (+ (* (* (* 2 x1) (/ (- (+ (* (* 3 x1) x1) (* 2 x2)) x1) (+ (* x1 x1) 1))) (- (/ (- (+ (* (* 3 x1) x1) (* 2 x2)) x1) (+ (* x1 x1) 1)) 3)) (* (* x1 x1) (- (* 4 (/ (- (+ (* (* 3 x1) x1) (* 2 x2)) x1) (+ (* x1 x1) 1))) 6))) (+ (* x1 x1) 1)) (* (* (* 3 x1) x1) (/ (- (+ (* (* 3 x1) x1) (* 2 x2)) x1) (+ (* x1 x1) 1)))) (* (* x1 x1) x1)) x1) (* 3 (/ (- (- (* (* 3 x1) x1) (* 2 x2)) x1) (+ (* x1 x1) 1))))))