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 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} \cdot \left(\left(3 \cdot x1\right) \cdot x1 + \left(\left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 3\right) \cdot \left(2 \cdot x1\right)\right) \cdot \left(x1 \cdot x1 + 1\right)\right) + \left(x1 \cdot x1 + 1\right) \cdot \left(\left(\sqrt[3]{\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}\right)}^{3}} \cdot \sqrt[3]{\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}\right)}^{3}}\right) \cdot \sqrt[3]{\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}\right)}^{3}}\right)\right) + \left({x1}^{3} + \left(\left(x1 + 3 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 - 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right) + x1\right)\right)double f(double x1, double x2) {
double r94382 = x1;
double r94383 = 2.0;
double r94384 = r94383 * r94382;
double r94385 = 3.0;
double r94386 = r94385 * r94382;
double r94387 = r94386 * r94382;
double r94388 = x2;
double r94389 = r94383 * r94388;
double r94390 = r94387 + r94389;
double r94391 = r94390 - r94382;
double r94392 = r94382 * r94382;
double r94393 = 1.0;
double r94394 = r94392 + r94393;
double r94395 = r94391 / r94394;
double r94396 = r94384 * r94395;
double r94397 = r94395 - r94385;
double r94398 = r94396 * r94397;
double r94399 = 4.0;
double r94400 = r94399 * r94395;
double r94401 = 6.0;
double r94402 = r94400 - r94401;
double r94403 = r94392 * r94402;
double r94404 = r94398 + r94403;
double r94405 = r94404 * r94394;
double r94406 = r94387 * r94395;
double r94407 = r94405 + r94406;
double r94408 = r94392 * r94382;
double r94409 = r94407 + r94408;
double r94410 = r94409 + r94382;
double r94411 = r94387 - r94389;
double r94412 = r94411 - r94382;
double r94413 = r94412 / r94394;
double r94414 = r94385 * r94413;
double r94415 = r94410 + r94414;
double r94416 = r94382 + r94415;
return r94416;
}
double f(double x1, double x2) {
double r94417 = 3.0;
double r94418 = x1;
double r94419 = r94417 * r94418;
double r94420 = r94419 * r94418;
double r94421 = 2.0;
double r94422 = x2;
double r94423 = r94421 * r94422;
double r94424 = r94420 + r94423;
double r94425 = r94424 - r94418;
double r94426 = r94418 * r94418;
double r94427 = 1.0;
double r94428 = r94426 + r94427;
double r94429 = r94425 / r94428;
double r94430 = r94429 - r94417;
double r94431 = r94421 * r94418;
double r94432 = r94430 * r94431;
double r94433 = r94432 * r94428;
double r94434 = r94420 + r94433;
double r94435 = r94429 * r94434;
double r94436 = 4.0;
double r94437 = r94436 * r94429;
double r94438 = 6.0;
double r94439 = r94437 - r94438;
double r94440 = cbrt(r94439);
double r94441 = 3.0;
double r94442 = pow(r94440, r94441);
double r94443 = r94426 * r94442;
double r94444 = cbrt(r94443);
double r94445 = r94444 * r94444;
double r94446 = r94445 * r94444;
double r94447 = r94428 * r94446;
double r94448 = r94435 + r94447;
double r94449 = pow(r94418, r94441);
double r94450 = r94420 - r94423;
double r94451 = r94450 - r94418;
double r94452 = r94451 / r94428;
double r94453 = r94417 * r94452;
double r94454 = r94418 + r94453;
double r94455 = r94454 + r94418;
double r94456 = r94449 + r94455;
double r94457 = r94448 + r94456;
return r94457;
}



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
Simplified0.6
Simplified0.6
Final simplification0.6
herbie shell --seed 2019347
(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))))))