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(\left(x1 \cdot \left(x1 \cdot 3\right)\right) \cdot \frac{x2 \cdot 2 - \left(x1 - x1 \cdot \left(x1 \cdot 3\right)\right)}{x1 \cdot x1 + 1} + \left(3 \cdot \frac{\left(x1 \cdot \left(x1 \cdot 3\right) - x1\right) - x2 \cdot 2}{x1 \cdot x1 + 1} + x1\right)\right) + \left(x1 \cdot x1 + 1\right) \cdot \left(\left(\left(x1 \cdot x1\right) \cdot \left(\frac{x2 \cdot 2 - \left(x1 - x1 \cdot \left(x1 \cdot 3\right)\right)}{x1 \cdot x1 + 1} \cdot 4 - 6\right) + \frac{x2 \cdot 2 - \left(x1 - x1 \cdot \left(x1 \cdot 3\right)\right)}{x1 \cdot x1 + 1} \cdot \left(2 \cdot \left(x1 \cdot \left(\frac{x2 \cdot 2 - \left(x1 - x1 \cdot \left(x1 \cdot 3\right)\right)}{x1 \cdot x1 + 1} - 3\right)\right)\right)\right) + x1\right)double f(double x1, double x2) {
double r33183484 = x1;
double r33183485 = 2.0;
double r33183486 = r33183485 * r33183484;
double r33183487 = 3.0;
double r33183488 = r33183487 * r33183484;
double r33183489 = r33183488 * r33183484;
double r33183490 = x2;
double r33183491 = r33183485 * r33183490;
double r33183492 = r33183489 + r33183491;
double r33183493 = r33183492 - r33183484;
double r33183494 = r33183484 * r33183484;
double r33183495 = 1.0;
double r33183496 = r33183494 + r33183495;
double r33183497 = r33183493 / r33183496;
double r33183498 = r33183486 * r33183497;
double r33183499 = r33183497 - r33183487;
double r33183500 = r33183498 * r33183499;
double r33183501 = 4.0;
double r33183502 = r33183501 * r33183497;
double r33183503 = 6.0;
double r33183504 = r33183502 - r33183503;
double r33183505 = r33183494 * r33183504;
double r33183506 = r33183500 + r33183505;
double r33183507 = r33183506 * r33183496;
double r33183508 = r33183489 * r33183497;
double r33183509 = r33183507 + r33183508;
double r33183510 = r33183494 * r33183484;
double r33183511 = r33183509 + r33183510;
double r33183512 = r33183511 + r33183484;
double r33183513 = r33183489 - r33183491;
double r33183514 = r33183513 - r33183484;
double r33183515 = r33183514 / r33183496;
double r33183516 = r33183487 * r33183515;
double r33183517 = r33183512 + r33183516;
double r33183518 = r33183484 + r33183517;
return r33183518;
}
double f(double x1, double x2) {
double r33183519 = x1;
double r33183520 = 3.0;
double r33183521 = r33183519 * r33183520;
double r33183522 = r33183519 * r33183521;
double r33183523 = x2;
double r33183524 = 2.0;
double r33183525 = r33183523 * r33183524;
double r33183526 = r33183519 - r33183522;
double r33183527 = r33183525 - r33183526;
double r33183528 = r33183519 * r33183519;
double r33183529 = 1.0;
double r33183530 = r33183528 + r33183529;
double r33183531 = r33183527 / r33183530;
double r33183532 = r33183522 * r33183531;
double r33183533 = r33183522 - r33183519;
double r33183534 = r33183533 - r33183525;
double r33183535 = r33183534 / r33183530;
double r33183536 = r33183520 * r33183535;
double r33183537 = r33183536 + r33183519;
double r33183538 = r33183532 + r33183537;
double r33183539 = 4.0;
double r33183540 = r33183531 * r33183539;
double r33183541 = 6.0;
double r33183542 = r33183540 - r33183541;
double r33183543 = r33183528 * r33183542;
double r33183544 = r33183531 - r33183520;
double r33183545 = r33183519 * r33183544;
double r33183546 = r33183524 * r33183545;
double r33183547 = r33183531 * r33183546;
double r33183548 = r33183543 + r33183547;
double r33183549 = r33183548 + r33183519;
double r33183550 = r33183530 * r33183549;
double r33183551 = r33183538 + r33183550;
return r33183551;
}



Bits error versus x1



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