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(\left(x1 + 3 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 - 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right) + \left(\left(x1 \cdot x1\right) \cdot \left(x1 + \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} \cdot 3\right) + x1\right)\right) + \left(\left(\left(x1 \cdot x1\right) \cdot \left(\sqrt[3]{4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 6} \cdot \sqrt[3]{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(\sqrt[3]{4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 6} \cdot \left(x1 \cdot x1 + 1\right)\right) + \left(x1 \cdot x1 + 1\right) \cdot \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)\right)\right)double f(double x1, double x2) {
double r56352 = x1;
double r56353 = 2.0;
double r56354 = r56353 * r56352;
double r56355 = 3.0;
double r56356 = r56355 * r56352;
double r56357 = r56356 * r56352;
double r56358 = x2;
double r56359 = r56353 * r56358;
double r56360 = r56357 + r56359;
double r56361 = r56360 - r56352;
double r56362 = r56352 * r56352;
double r56363 = 1.0;
double r56364 = r56362 + r56363;
double r56365 = r56361 / r56364;
double r56366 = r56354 * r56365;
double r56367 = r56365 - r56355;
double r56368 = r56366 * r56367;
double r56369 = 4.0;
double r56370 = r56369 * r56365;
double r56371 = 6.0;
double r56372 = r56370 - r56371;
double r56373 = r56362 * r56372;
double r56374 = r56368 + r56373;
double r56375 = r56374 * r56364;
double r56376 = r56357 * r56365;
double r56377 = r56375 + r56376;
double r56378 = r56362 * r56352;
double r56379 = r56377 + r56378;
double r56380 = r56379 + r56352;
double r56381 = r56357 - r56359;
double r56382 = r56381 - r56352;
double r56383 = r56382 / r56364;
double r56384 = r56355 * r56383;
double r56385 = r56380 + r56384;
double r56386 = r56352 + r56385;
return r56386;
}
double f(double x1, double x2) {
double r56387 = x1;
double r56388 = 3.0;
double r56389 = r56388 * r56387;
double r56390 = r56389 * r56387;
double r56391 = 2.0;
double r56392 = x2;
double r56393 = r56391 * r56392;
double r56394 = r56390 - r56393;
double r56395 = r56394 - r56387;
double r56396 = r56387 * r56387;
double r56397 = 1.0;
double r56398 = r56396 + r56397;
double r56399 = r56395 / r56398;
double r56400 = r56388 * r56399;
double r56401 = r56387 + r56400;
double r56402 = r56390 + r56393;
double r56403 = r56402 - r56387;
double r56404 = r56403 / r56398;
double r56405 = r56404 * r56388;
double r56406 = r56387 + r56405;
double r56407 = r56396 * r56406;
double r56408 = r56407 + r56387;
double r56409 = r56401 + r56408;
double r56410 = 4.0;
double r56411 = r56410 * r56404;
double r56412 = 6.0;
double r56413 = r56411 - r56412;
double r56414 = cbrt(r56413);
double r56415 = r56414 * r56414;
double r56416 = r56396 * r56415;
double r56417 = r56414 * r56398;
double r56418 = r56416 * r56417;
double r56419 = r56391 * r56387;
double r56420 = r56419 * r56404;
double r56421 = r56404 - r56388;
double r56422 = r56420 * r56421;
double r56423 = r56398 * r56422;
double r56424 = r56418 + r56423;
double r56425 = r56409 + r56424;
return r56425;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
Simplified0.5
rmApplied add-cube-cbrt0.6
Applied associate-*r*0.6
rmApplied add-cube-cbrt0.6
Final simplification0.6
herbie shell --seed 2019291
(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))))))