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(x1 \cdot \left(x1 \cdot x1\right) + \left(\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} + \left(1 + x1 \cdot x1\right) \cdot \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 \left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 3\right) + \left(\left(-x1 \cdot \left(x1 \cdot 6\right)\right) + \frac{\left(\left(\left(3 \cdot x1\right) \cdot x1 - x1\right) + x2 \cdot 2\right) \cdot 4}{1 + x1 \cdot x1} \cdot \left(x1 \cdot x1\right)\right)\right)\right)\right) + x1\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 r230426 = x1;
double r230427 = 2.0;
double r230428 = r230427 * r230426;
double r230429 = 3.0;
double r230430 = r230429 * r230426;
double r230431 = r230430 * r230426;
double r230432 = x2;
double r230433 = r230427 * r230432;
double r230434 = r230431 + r230433;
double r230435 = r230434 - r230426;
double r230436 = r230426 * r230426;
double r230437 = 1.0;
double r230438 = r230436 + r230437;
double r230439 = r230435 / r230438;
double r230440 = r230428 * r230439;
double r230441 = r230439 - r230429;
double r230442 = r230440 * r230441;
double r230443 = 4.0;
double r230444 = r230443 * r230439;
double r230445 = 6.0;
double r230446 = r230444 - r230445;
double r230447 = r230436 * r230446;
double r230448 = r230442 + r230447;
double r230449 = r230448 * r230438;
double r230450 = r230431 * r230439;
double r230451 = r230449 + r230450;
double r230452 = r230436 * r230426;
double r230453 = r230451 + r230452;
double r230454 = r230453 + r230426;
double r230455 = r230431 - r230433;
double r230456 = r230455 - r230426;
double r230457 = r230456 / r230438;
double r230458 = r230429 * r230457;
double r230459 = r230454 + r230458;
double r230460 = r230426 + r230459;
return r230460;
}
double f(double x1, double x2) {
double r230461 = x1;
double r230462 = r230461 * r230461;
double r230463 = r230461 * r230462;
double r230464 = 3.0;
double r230465 = r230464 * r230461;
double r230466 = r230465 * r230461;
double r230467 = x2;
double r230468 = 2.0;
double r230469 = r230467 * r230468;
double r230470 = r230466 + r230469;
double r230471 = r230470 - r230461;
double r230472 = 1.0;
double r230473 = r230472 + r230462;
double r230474 = r230471 / r230473;
double r230475 = r230466 * r230474;
double r230476 = r230461 * r230468;
double r230477 = r230476 * r230474;
double r230478 = r230474 - r230464;
double r230479 = r230477 * r230478;
double r230480 = 6.0;
double r230481 = r230461 * r230480;
double r230482 = r230461 * r230481;
double r230483 = -r230482;
double r230484 = r230466 - r230461;
double r230485 = r230484 + r230469;
double r230486 = 4.0;
double r230487 = r230485 * r230486;
double r230488 = r230487 / r230473;
double r230489 = r230488 * r230462;
double r230490 = r230483 + r230489;
double r230491 = r230479 + r230490;
double r230492 = r230473 * r230491;
double r230493 = r230475 + r230492;
double r230494 = r230463 + r230493;
double r230495 = r230494 + r230461;
double r230496 = r230466 - r230469;
double r230497 = r230496 - r230461;
double r230498 = r230497 / r230473;
double r230499 = r230498 * r230464;
double r230500 = r230495 + r230499;
double r230501 = r230461 + r230500;
return r230501;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
rmApplied sub-neg0.5
Applied distribute-lft-in0.5
Simplified0.5
Simplified0.5
rmApplied pow10.5
Final simplification0.5
herbie shell --seed 2019194
(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))))))