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(\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(\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 \sqrt[3]{4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 6}\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)double f(double x1, double x2) {
double r120402 = x1;
double r120403 = 2.0;
double r120404 = r120403 * r120402;
double r120405 = 3.0;
double r120406 = r120405 * r120402;
double r120407 = r120406 * r120402;
double r120408 = x2;
double r120409 = r120403 * r120408;
double r120410 = r120407 + r120409;
double r120411 = r120410 - r120402;
double r120412 = r120402 * r120402;
double r120413 = 1.0;
double r120414 = r120412 + r120413;
double r120415 = r120411 / r120414;
double r120416 = r120404 * r120415;
double r120417 = r120415 - r120405;
double r120418 = r120416 * r120417;
double r120419 = 4.0;
double r120420 = r120419 * r120415;
double r120421 = 6.0;
double r120422 = r120420 - r120421;
double r120423 = r120412 * r120422;
double r120424 = r120418 + r120423;
double r120425 = r120424 * r120414;
double r120426 = r120407 * r120415;
double r120427 = r120425 + r120426;
double r120428 = r120412 * r120402;
double r120429 = r120427 + r120428;
double r120430 = r120429 + r120402;
double r120431 = r120407 - r120409;
double r120432 = r120431 - r120402;
double r120433 = r120432 / r120414;
double r120434 = r120405 * r120433;
double r120435 = r120430 + r120434;
double r120436 = r120402 + r120435;
return r120436;
}
double f(double x1, double x2) {
double r120437 = x1;
double r120438 = 2.0;
double r120439 = r120438 * r120437;
double r120440 = 3.0;
double r120441 = r120440 * r120437;
double r120442 = r120441 * r120437;
double r120443 = x2;
double r120444 = r120438 * r120443;
double r120445 = r120442 + r120444;
double r120446 = r120445 - r120437;
double r120447 = r120437 * r120437;
double r120448 = 1.0;
double r120449 = r120447 + r120448;
double r120450 = r120446 / r120449;
double r120451 = r120439 * r120450;
double r120452 = r120450 - r120440;
double r120453 = r120451 * r120452;
double r120454 = 4.0;
double r120455 = r120454 * r120450;
double r120456 = 6.0;
double r120457 = r120455 - r120456;
double r120458 = cbrt(r120457);
double r120459 = r120458 * r120458;
double r120460 = r120447 * r120459;
double r120461 = r120460 * r120458;
double r120462 = r120453 + r120461;
double r120463 = r120462 * r120449;
double r120464 = r120442 * r120450;
double r120465 = r120463 + r120464;
double r120466 = r120447 * r120437;
double r120467 = r120465 + r120466;
double r120468 = r120467 + r120437;
double r120469 = r120442 - r120444;
double r120470 = r120469 - r120437;
double r120471 = r120470 / r120449;
double r120472 = r120440 * r120471;
double r120473 = r120468 + r120472;
double r120474 = r120437 + r120473;
return r120474;
}



Bits error versus x1



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