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(\left(x1 \cdot x1\right) \cdot 3 + \left(x1 \cdot \left(\frac{2 \cdot x2 - \left(x1 - \left(x1 \cdot x1\right) \cdot 3\right)}{1 + x1 \cdot x1} - 3\right)\right) \cdot \left(2 \cdot \left(1 + x1 \cdot x1\right)\right)\right) \cdot \frac{2 \cdot x2 - \left(x1 - \left(x1 \cdot x1\right) \cdot 3\right)}{1 + x1 \cdot x1} + \left(x1 + \left(-6 + \frac{4}{1 + x1 \cdot x1} \cdot \left(2 \cdot x2 - \left(x1 - \sqrt{\left(x1 \cdot x1\right) \cdot 3} \cdot \sqrt{\left(x1 \cdot x1\right) \cdot 3}\right)\right)\right) \cdot \left(x1 \cdot x1\right)\right) \cdot \left(1 + x1 \cdot x1\right)\right) + \left(\frac{x2 \cdot -2 + \left(\left(x1 \cdot x1\right) \cdot 3 - x1\right)}{1 + x1 \cdot x1} \cdot 3 + x1\right)double f(double x1, double x2) {
double r3288614 = x1;
double r3288615 = 2.0;
double r3288616 = r3288615 * r3288614;
double r3288617 = 3.0;
double r3288618 = r3288617 * r3288614;
double r3288619 = r3288618 * r3288614;
double r3288620 = x2;
double r3288621 = r3288615 * r3288620;
double r3288622 = r3288619 + r3288621;
double r3288623 = r3288622 - r3288614;
double r3288624 = r3288614 * r3288614;
double r3288625 = 1.0;
double r3288626 = r3288624 + r3288625;
double r3288627 = r3288623 / r3288626;
double r3288628 = r3288616 * r3288627;
double r3288629 = r3288627 - r3288617;
double r3288630 = r3288628 * r3288629;
double r3288631 = 4.0;
double r3288632 = r3288631 * r3288627;
double r3288633 = 6.0;
double r3288634 = r3288632 - r3288633;
double r3288635 = r3288624 * r3288634;
double r3288636 = r3288630 + r3288635;
double r3288637 = r3288636 * r3288626;
double r3288638 = r3288619 * r3288627;
double r3288639 = r3288637 + r3288638;
double r3288640 = r3288624 * r3288614;
double r3288641 = r3288639 + r3288640;
double r3288642 = r3288641 + r3288614;
double r3288643 = r3288619 - r3288621;
double r3288644 = r3288643 - r3288614;
double r3288645 = r3288644 / r3288626;
double r3288646 = r3288617 * r3288645;
double r3288647 = r3288642 + r3288646;
double r3288648 = r3288614 + r3288647;
return r3288648;
}
double f(double x1, double x2) {
double r3288649 = x1;
double r3288650 = r3288649 * r3288649;
double r3288651 = 3.0;
double r3288652 = r3288650 * r3288651;
double r3288653 = 2.0;
double r3288654 = x2;
double r3288655 = r3288653 * r3288654;
double r3288656 = r3288649 - r3288652;
double r3288657 = r3288655 - r3288656;
double r3288658 = 1.0;
double r3288659 = r3288658 + r3288650;
double r3288660 = r3288657 / r3288659;
double r3288661 = r3288660 - r3288651;
double r3288662 = r3288649 * r3288661;
double r3288663 = r3288653 * r3288659;
double r3288664 = r3288662 * r3288663;
double r3288665 = r3288652 + r3288664;
double r3288666 = r3288665 * r3288660;
double r3288667 = -6.0;
double r3288668 = 4.0;
double r3288669 = r3288668 / r3288659;
double r3288670 = sqrt(r3288652);
double r3288671 = r3288670 * r3288670;
double r3288672 = r3288649 - r3288671;
double r3288673 = r3288655 - r3288672;
double r3288674 = r3288669 * r3288673;
double r3288675 = r3288667 + r3288674;
double r3288676 = r3288675 * r3288650;
double r3288677 = r3288649 + r3288676;
double r3288678 = r3288677 * r3288659;
double r3288679 = r3288666 + r3288678;
double r3288680 = -2.0;
double r3288681 = r3288654 * r3288680;
double r3288682 = r3288652 - r3288649;
double r3288683 = r3288681 + r3288682;
double r3288684 = r3288683 / r3288659;
double r3288685 = r3288684 * r3288651;
double r3288686 = r3288685 + r3288649;
double r3288687 = r3288679 + r3288686;
return r3288687;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
Simplified0.5
rmApplied add-sqr-sqrt0.6
Final simplification0.6
herbie shell --seed 2019149
(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))))))