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(3 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 - x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} + \left(x1 + \left(x1 \cdot \left(x1 \cdot x1\right) + \left(\left(1 + x1 \cdot x1\right) \cdot \left(\left(x1 \cdot x1\right) \cdot \left(4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 6\right) + \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 \mathsf{fma}\left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{\left(x1 \cdot x1\right) \cdot \left(x1 \cdot x1\right) - 1}, x1 \cdot x1 - 1, -3\right)\right) + \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}\right)\right)\right)\right)double f(double x1, double x2) {
double r2766419 = x1;
double r2766420 = 2.0;
double r2766421 = r2766420 * r2766419;
double r2766422 = 3.0;
double r2766423 = r2766422 * r2766419;
double r2766424 = r2766423 * r2766419;
double r2766425 = x2;
double r2766426 = r2766420 * r2766425;
double r2766427 = r2766424 + r2766426;
double r2766428 = r2766427 - r2766419;
double r2766429 = r2766419 * r2766419;
double r2766430 = 1.0;
double r2766431 = r2766429 + r2766430;
double r2766432 = r2766428 / r2766431;
double r2766433 = r2766421 * r2766432;
double r2766434 = r2766432 - r2766422;
double r2766435 = r2766433 * r2766434;
double r2766436 = 4.0;
double r2766437 = r2766436 * r2766432;
double r2766438 = 6.0;
double r2766439 = r2766437 - r2766438;
double r2766440 = r2766429 * r2766439;
double r2766441 = r2766435 + r2766440;
double r2766442 = r2766441 * r2766431;
double r2766443 = r2766424 * r2766432;
double r2766444 = r2766442 + r2766443;
double r2766445 = r2766429 * r2766419;
double r2766446 = r2766444 + r2766445;
double r2766447 = r2766446 + r2766419;
double r2766448 = r2766424 - r2766426;
double r2766449 = r2766448 - r2766419;
double r2766450 = r2766449 / r2766431;
double r2766451 = r2766422 * r2766450;
double r2766452 = r2766447 + r2766451;
double r2766453 = r2766419 + r2766452;
return r2766453;
}
double f(double x1, double x2) {
double r2766454 = x1;
double r2766455 = 3.0;
double r2766456 = r2766455 * r2766454;
double r2766457 = r2766456 * r2766454;
double r2766458 = x2;
double r2766459 = 2.0;
double r2766460 = r2766458 * r2766459;
double r2766461 = r2766457 - r2766460;
double r2766462 = r2766461 - r2766454;
double r2766463 = 1.0;
double r2766464 = r2766454 * r2766454;
double r2766465 = r2766463 + r2766464;
double r2766466 = r2766462 / r2766465;
double r2766467 = r2766455 * r2766466;
double r2766468 = r2766454 * r2766464;
double r2766469 = 4.0;
double r2766470 = r2766457 + r2766460;
double r2766471 = r2766470 - r2766454;
double r2766472 = r2766471 / r2766465;
double r2766473 = r2766469 * r2766472;
double r2766474 = 6.0;
double r2766475 = r2766473 - r2766474;
double r2766476 = r2766464 * r2766475;
double r2766477 = r2766454 * r2766459;
double r2766478 = r2766477 * r2766472;
double r2766479 = r2766464 * r2766464;
double r2766480 = r2766479 - r2766463;
double r2766481 = r2766471 / r2766480;
double r2766482 = r2766464 - r2766463;
double r2766483 = -3.0;
double r2766484 = fma(r2766481, r2766482, r2766483);
double r2766485 = r2766478 * r2766484;
double r2766486 = r2766476 + r2766485;
double r2766487 = r2766465 * r2766486;
double r2766488 = r2766457 * r2766472;
double r2766489 = r2766487 + r2766488;
double r2766490 = r2766468 + r2766489;
double r2766491 = r2766454 + r2766490;
double r2766492 = r2766467 + r2766491;
double r2766493 = r2766454 + r2766492;
return r2766493;
}



Bits error versus x1



Bits error versus x2
Initial program 0.5
rmApplied flip-+0.5
Applied associate-/r/0.5
Applied fma-neg0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2019142 +o rules:numerics
(FPCore (x1 x2)
:name "Rosa's FloatVsDoubleBenchmark"
(+ 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))))))