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(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} \cdot \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) + \left(\left(-3\right) \cdot \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) + \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)\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 r85726 = x1;
double r85727 = 2.0;
double r85728 = r85727 * r85726;
double r85729 = 3.0;
double r85730 = r85729 * r85726;
double r85731 = r85730 * r85726;
double r85732 = x2;
double r85733 = r85727 * r85732;
double r85734 = r85731 + r85733;
double r85735 = r85734 - r85726;
double r85736 = r85726 * r85726;
double r85737 = 1.0;
double r85738 = r85736 + r85737;
double r85739 = r85735 / r85738;
double r85740 = r85728 * r85739;
double r85741 = r85739 - r85729;
double r85742 = r85740 * r85741;
double r85743 = 4.0;
double r85744 = r85743 * r85739;
double r85745 = 6.0;
double r85746 = r85744 - r85745;
double r85747 = r85736 * r85746;
double r85748 = r85742 + r85747;
double r85749 = r85748 * r85738;
double r85750 = r85731 * r85739;
double r85751 = r85749 + r85750;
double r85752 = r85736 * r85726;
double r85753 = r85751 + r85752;
double r85754 = r85753 + r85726;
double r85755 = r85731 - r85733;
double r85756 = r85755 - r85726;
double r85757 = r85756 / r85738;
double r85758 = r85729 * r85757;
double r85759 = r85754 + r85758;
double r85760 = r85726 + r85759;
return r85760;
}
double f(double x1, double x2) {
double r85761 = x1;
double r85762 = 3.0;
double r85763 = r85762 * r85761;
double r85764 = r85763 * r85761;
double r85765 = 2.0;
double r85766 = x2;
double r85767 = r85765 * r85766;
double r85768 = r85764 + r85767;
double r85769 = r85768 - r85761;
double r85770 = r85761 * r85761;
double r85771 = 1.0;
double r85772 = r85770 + r85771;
double r85773 = r85769 / r85772;
double r85774 = r85765 * r85761;
double r85775 = r85774 * r85773;
double r85776 = r85773 * r85775;
double r85777 = -r85762;
double r85778 = r85777 * r85775;
double r85779 = 4.0;
double r85780 = r85779 * r85773;
double r85781 = 6.0;
double r85782 = r85780 - r85781;
double r85783 = r85770 * r85782;
double r85784 = r85778 + r85783;
double r85785 = r85776 + r85784;
double r85786 = r85785 * r85772;
double r85787 = r85764 * r85773;
double r85788 = r85786 + r85787;
double r85789 = r85770 * r85761;
double r85790 = r85788 + r85789;
double r85791 = r85790 + r85761;
double r85792 = r85764 - r85767;
double r85793 = r85792 - r85761;
double r85794 = r85793 / r85772;
double r85795 = r85762 * r85794;
double r85796 = r85791 + r85795;
double r85797 = r85761 + r85796;
return r85797;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
rmApplied sub-neg0.5
Applied distribute-rgt-in0.5
Applied associate-+l+0.5
Final simplification0.5
herbie shell --seed 2020001
(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))))))