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)\left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 - x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} \cdot 3 + \left(x1 + \left(\left(\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} + \left(1 + x1 \cdot x1\right) \cdot \left(\frac{\left(\left(\frac{\left(3 \cdot {x1}^{2} + x2 \cdot 2\right) - x1}{{x1}^{2} + 1} \cdot 4 - 6\right) \cdot \left(x1 \cdot \left(6 + \frac{\left(3 \cdot {x1}^{2} + x2 \cdot 2\right) - x1}{{x1}^{2} + 1} \cdot 4\right)\right)\right) \cdot x1}{4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} + 6} + \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)\right)\right) + x1 \cdot \left(x1 \cdot x1\right)\right)\right)\right) + x1double f(double x1, double x2) {
double r61063 = x1;
double r61064 = 2.0;
double r61065 = r61064 * r61063;
double r61066 = 3.0;
double r61067 = r61066 * r61063;
double r61068 = r61067 * r61063;
double r61069 = x2;
double r61070 = r61064 * r61069;
double r61071 = r61068 + r61070;
double r61072 = r61071 - r61063;
double r61073 = r61063 * r61063;
double r61074 = 1.0;
double r61075 = r61073 + r61074;
double r61076 = r61072 / r61075;
double r61077 = r61065 * r61076;
double r61078 = r61076 - r61066;
double r61079 = r61077 * r61078;
double r61080 = 4.0;
double r61081 = r61080 * r61076;
double r61082 = 6.0;
double r61083 = r61081 - r61082;
double r61084 = r61073 * r61083;
double r61085 = r61079 + r61084;
double r61086 = r61085 * r61075;
double r61087 = r61068 * r61076;
double r61088 = r61086 + r61087;
double r61089 = r61073 * r61063;
double r61090 = r61088 + r61089;
double r61091 = r61090 + r61063;
double r61092 = r61068 - r61070;
double r61093 = r61092 - r61063;
double r61094 = r61093 / r61075;
double r61095 = r61066 * r61094;
double r61096 = r61091 + r61095;
double r61097 = r61063 + r61096;
return r61097;
}
double f(double x1, double x2) {
double r61098 = 3.0;
double r61099 = x1;
double r61100 = r61098 * r61099;
double r61101 = r61100 * r61099;
double r61102 = x2;
double r61103 = 2.0;
double r61104 = r61102 * r61103;
double r61105 = r61101 - r61104;
double r61106 = r61105 - r61099;
double r61107 = 1.0;
double r61108 = r61099 * r61099;
double r61109 = r61107 + r61108;
double r61110 = r61106 / r61109;
double r61111 = r61110 * r61098;
double r61112 = r61101 + r61104;
double r61113 = r61112 - r61099;
double r61114 = r61113 / r61109;
double r61115 = r61101 * r61114;
double r61116 = 2.0;
double r61117 = pow(r61099, r61116);
double r61118 = r61098 * r61117;
double r61119 = r61118 + r61104;
double r61120 = r61119 - r61099;
double r61121 = r61117 + r61107;
double r61122 = r61120 / r61121;
double r61123 = 4.0;
double r61124 = r61122 * r61123;
double r61125 = 6.0;
double r61126 = r61124 - r61125;
double r61127 = r61125 + r61124;
double r61128 = r61099 * r61127;
double r61129 = r61126 * r61128;
double r61130 = r61129 * r61099;
double r61131 = r61123 * r61114;
double r61132 = r61131 + r61125;
double r61133 = r61130 / r61132;
double r61134 = r61114 - r61098;
double r61135 = r61099 * r61103;
double r61136 = r61135 * r61114;
double r61137 = r61134 * r61136;
double r61138 = r61133 + r61137;
double r61139 = r61109 * r61138;
double r61140 = r61115 + r61139;
double r61141 = r61099 * r61108;
double r61142 = r61140 + r61141;
double r61143 = r61099 + r61142;
double r61144 = r61111 + r61143;
double r61145 = r61144 + r61099;
return r61145;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
rmApplied flip--8.3
Applied associate-*r/8.3
Simplified0.6
Final simplification0.6
herbie shell --seed 2019196
(FPCore (x1 x2)
:name "Rosa's FloatVsDoubleBenchmark"
(+ x1 (+ (+ (+ (+ (* (+ (* (* (* 2.0 x1) (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0))) (- (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0)) 3.0)) (* (* x1 x1) (- (* 4.0 (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0))) 6.0))) (+ (* x1 x1) 1.0)) (* (* (* 3.0 x1) x1) (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0)))) (* (* x1 x1) x1)) x1) (* 3.0 (/ (- (- (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0))))))