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)\mathsf{fma}\left(\frac{3}{\mathsf{fma}\left(x1, x1, 1\right)}, \mathsf{fma}\left(3, x1 \cdot x1, -\mathsf{fma}\left(x2, 2, x1\right)\right), \left(x1 + \frac{\mathsf{fma}\left(3, x1 \cdot x1, 2 \cdot x2 - x1\right) \cdot \left(\left(3 \cdot x1\right) \cdot x1\right)}{\mathsf{fma}\left(x1, x1, 1\right)}\right) + \mathsf{fma}\left(\mathsf{fma}\left(\left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 3\right) \cdot 2, \frac{x1 \cdot \mathsf{fma}\left(3, x1 \cdot x1, 2 \cdot x2 - x1\right)}{\mathsf{fma}\left(x1, x1, 1\right)}, x1 \cdot \mathsf{fma}\left(x1, \frac{\mathsf{fma}\left(3, x1 \cdot x1, 2 \cdot x2 - x1\right) \cdot 4}{\mathsf{fma}\left(x1, x1, 1\right)}, x1 \cdot \left(-6\right)\right)\right), \mathsf{fma}\left(x1, x1, 1\right), \mathsf{fma}\left(x1, x1 \cdot x1, x1\right)\right)\right)double f(double x1, double x2) {
double r50225 = x1;
double r50226 = 2.0;
double r50227 = r50226 * r50225;
double r50228 = 3.0;
double r50229 = r50228 * r50225;
double r50230 = r50229 * r50225;
double r50231 = x2;
double r50232 = r50226 * r50231;
double r50233 = r50230 + r50232;
double r50234 = r50233 - r50225;
double r50235 = r50225 * r50225;
double r50236 = 1.0;
double r50237 = r50235 + r50236;
double r50238 = r50234 / r50237;
double r50239 = r50227 * r50238;
double r50240 = r50238 - r50228;
double r50241 = r50239 * r50240;
double r50242 = 4.0;
double r50243 = r50242 * r50238;
double r50244 = 6.0;
double r50245 = r50243 - r50244;
double r50246 = r50235 * r50245;
double r50247 = r50241 + r50246;
double r50248 = r50247 * r50237;
double r50249 = r50230 * r50238;
double r50250 = r50248 + r50249;
double r50251 = r50235 * r50225;
double r50252 = r50250 + r50251;
double r50253 = r50252 + r50225;
double r50254 = r50230 - r50232;
double r50255 = r50254 - r50225;
double r50256 = r50255 / r50237;
double r50257 = r50228 * r50256;
double r50258 = r50253 + r50257;
double r50259 = r50225 + r50258;
return r50259;
}
double f(double x1, double x2) {
double r50260 = 3.0;
double r50261 = x1;
double r50262 = 1.0;
double r50263 = fma(r50261, r50261, r50262);
double r50264 = r50260 / r50263;
double r50265 = r50261 * r50261;
double r50266 = x2;
double r50267 = 2.0;
double r50268 = fma(r50266, r50267, r50261);
double r50269 = -r50268;
double r50270 = fma(r50260, r50265, r50269);
double r50271 = r50267 * r50266;
double r50272 = r50271 - r50261;
double r50273 = fma(r50260, r50265, r50272);
double r50274 = r50260 * r50261;
double r50275 = r50274 * r50261;
double r50276 = r50273 * r50275;
double r50277 = r50276 / r50263;
double r50278 = r50261 + r50277;
double r50279 = r50275 + r50271;
double r50280 = r50279 - r50261;
double r50281 = r50265 + r50262;
double r50282 = r50280 / r50281;
double r50283 = r50282 - r50260;
double r50284 = r50283 * r50267;
double r50285 = r50261 * r50273;
double r50286 = r50285 / r50263;
double r50287 = 4.0;
double r50288 = r50273 * r50287;
double r50289 = r50288 / r50263;
double r50290 = 6.0;
double r50291 = -r50290;
double r50292 = r50261 * r50291;
double r50293 = fma(r50261, r50289, r50292);
double r50294 = r50261 * r50293;
double r50295 = fma(r50284, r50286, r50294);
double r50296 = fma(r50261, r50265, r50261);
double r50297 = fma(r50295, r50263, r50296);
double r50298 = r50278 + r50297;
double r50299 = fma(r50264, r50270, r50298);
return r50299;
}



Bits error versus x1



Bits error versus x2
Initial program 0.5
Simplified0.3
rmApplied associate-*l*0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2019356 +o rules:numerics
(FPCore (x1 x2)
:name "Rosa's FloatVsDoubleBenchmark"
:precision binary64
(+ 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))))))