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(\left(x1 + \left(x1 \cdot \left(x1 \cdot x1\right) + \left(\left(\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) \cdot \mathsf{fma}\left(\left(\frac{1}{\sqrt{1 + x1 \cdot x1}}\right), \left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{\sqrt{1 + x1 \cdot x1}}\right), -3\right) + \left(\sqrt[3]{\left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} \cdot 4 - 6\right) \cdot \left(x1 \cdot x1\right)} \cdot \sqrt[3]{\left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} \cdot 4 - 6\right) \cdot \left(x1 \cdot x1\right)}\right) \cdot \sqrt[3]{\left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} \cdot 4 - 6\right) \cdot \left(x1 \cdot x1\right)}\right) \cdot \left(1 + x1 \cdot x1\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) + \frac{\left(\left(3 \cdot x1\right) \cdot x1 - x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} \cdot 3\right)double f(double x1, double x2) {
double r1075248 = x1;
double r1075249 = 2.0;
double r1075250 = r1075249 * r1075248;
double r1075251 = 3.0;
double r1075252 = r1075251 * r1075248;
double r1075253 = r1075252 * r1075248;
double r1075254 = x2;
double r1075255 = r1075249 * r1075254;
double r1075256 = r1075253 + r1075255;
double r1075257 = r1075256 - r1075248;
double r1075258 = r1075248 * r1075248;
double r1075259 = 1.0;
double r1075260 = r1075258 + r1075259;
double r1075261 = r1075257 / r1075260;
double r1075262 = r1075250 * r1075261;
double r1075263 = r1075261 - r1075251;
double r1075264 = r1075262 * r1075263;
double r1075265 = 4.0;
double r1075266 = r1075265 * r1075261;
double r1075267 = 6.0;
double r1075268 = r1075266 - r1075267;
double r1075269 = r1075258 * r1075268;
double r1075270 = r1075264 + r1075269;
double r1075271 = r1075270 * r1075260;
double r1075272 = r1075253 * r1075261;
double r1075273 = r1075271 + r1075272;
double r1075274 = r1075258 * r1075248;
double r1075275 = r1075273 + r1075274;
double r1075276 = r1075275 + r1075248;
double r1075277 = r1075253 - r1075255;
double r1075278 = r1075277 - r1075248;
double r1075279 = r1075278 / r1075260;
double r1075280 = r1075251 * r1075279;
double r1075281 = r1075276 + r1075280;
double r1075282 = r1075248 + r1075281;
return r1075282;
}
double f(double x1, double x2) {
double r1075283 = x1;
double r1075284 = r1075283 * r1075283;
double r1075285 = r1075283 * r1075284;
double r1075286 = 2.0;
double r1075287 = r1075283 * r1075286;
double r1075288 = 3.0;
double r1075289 = r1075288 * r1075283;
double r1075290 = r1075289 * r1075283;
double r1075291 = x2;
double r1075292 = r1075291 * r1075286;
double r1075293 = r1075290 + r1075292;
double r1075294 = r1075293 - r1075283;
double r1075295 = 1.0;
double r1075296 = r1075295 + r1075284;
double r1075297 = r1075294 / r1075296;
double r1075298 = r1075287 * r1075297;
double r1075299 = sqrt(r1075296);
double r1075300 = r1075295 / r1075299;
double r1075301 = r1075294 / r1075299;
double r1075302 = -3.0;
double r1075303 = fma(r1075300, r1075301, r1075302);
double r1075304 = r1075298 * r1075303;
double r1075305 = 4.0;
double r1075306 = r1075297 * r1075305;
double r1075307 = 6.0;
double r1075308 = r1075306 - r1075307;
double r1075309 = r1075308 * r1075284;
double r1075310 = cbrt(r1075309);
double r1075311 = r1075310 * r1075310;
double r1075312 = r1075311 * r1075310;
double r1075313 = r1075304 + r1075312;
double r1075314 = r1075313 * r1075296;
double r1075315 = r1075290 * r1075297;
double r1075316 = r1075314 + r1075315;
double r1075317 = r1075285 + r1075316;
double r1075318 = r1075283 + r1075317;
double r1075319 = r1075290 - r1075292;
double r1075320 = r1075319 - r1075283;
double r1075321 = r1075320 / r1075296;
double r1075322 = r1075321 * r1075288;
double r1075323 = r1075318 + r1075322;
double r1075324 = r1075283 + r1075323;
return r1075324;
}



Bits error versus x1



Bits error versus x2
Initial program 0.5
rmApplied add-sqr-sqrt0.5
Applied *-un-lft-identity0.5
Applied *-un-lft-identity0.5
Applied distribute-lft-out--0.5
Applied times-frac0.5
Applied fma-neg0.5
Simplified0.5
rmApplied add-cube-cbrt0.6
Final simplification0.6
herbie shell --seed 2019128 +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))))))