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(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)double f(double x1, double x2) {
double r60370 = x1;
double r60371 = 2.0;
double r60372 = r60371 * r60370;
double r60373 = 3.0;
double r60374 = r60373 * r60370;
double r60375 = r60374 * r60370;
double r60376 = x2;
double r60377 = r60371 * r60376;
double r60378 = r60375 + r60377;
double r60379 = r60378 - r60370;
double r60380 = r60370 * r60370;
double r60381 = 1.0;
double r60382 = r60380 + r60381;
double r60383 = r60379 / r60382;
double r60384 = r60372 * r60383;
double r60385 = r60383 - r60373;
double r60386 = r60384 * r60385;
double r60387 = 4.0;
double r60388 = r60387 * r60383;
double r60389 = 6.0;
double r60390 = r60388 - r60389;
double r60391 = r60380 * r60390;
double r60392 = r60386 + r60391;
double r60393 = r60392 * r60382;
double r60394 = r60375 * r60383;
double r60395 = r60393 + r60394;
double r60396 = r60380 * r60370;
double r60397 = r60395 + r60396;
double r60398 = r60397 + r60370;
double r60399 = r60375 - r60377;
double r60400 = r60399 - r60370;
double r60401 = r60400 / r60382;
double r60402 = r60373 * r60401;
double r60403 = r60398 + r60402;
double r60404 = r60370 + r60403;
return r60404;
}
double f(double x1, double x2) {
double r60405 = x1;
double r60406 = 2.0;
double r60407 = r60406 * r60405;
double r60408 = 3.0;
double r60409 = r60408 * r60405;
double r60410 = r60409 * r60405;
double r60411 = x2;
double r60412 = r60406 * r60411;
double r60413 = r60410 + r60412;
double r60414 = r60413 - r60405;
double r60415 = r60405 * r60405;
double r60416 = 1.0;
double r60417 = r60415 + r60416;
double r60418 = r60414 / r60417;
double r60419 = r60407 * r60418;
double r60420 = r60418 - r60408;
double r60421 = r60419 * r60420;
double r60422 = 4.0;
double r60423 = r60422 * r60418;
double r60424 = 6.0;
double r60425 = r60423 - r60424;
double r60426 = r60415 * r60425;
double r60427 = r60421 + r60426;
double r60428 = r60427 * r60417;
double r60429 = r60410 * r60418;
double r60430 = r60428 + r60429;
double r60431 = r60415 * r60405;
double r60432 = r60430 + r60431;
double r60433 = r60432 + r60405;
double r60434 = r60410 - r60412;
double r60435 = r60434 - r60405;
double r60436 = r60435 / r60417;
double r60437 = r60408 * r60436;
double r60438 = r60433 + r60437;
double r60439 = r60405 + r60438;
return r60439;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
Final simplification0.5
herbie shell --seed 2020045
(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))))))