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(\frac{1}{\sqrt{\sqrt{x1 \cdot x1 + 1}}} \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + \left(\left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 3\right) \cdot \left(2 \cdot x1\right)\right) \cdot \left(x1 \cdot x1 + 1\right)\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{\sqrt{x1 \cdot x1 + 1}}}{\sqrt{\sqrt{x1 \cdot x1 + 1}}} + \left(x1 \cdot x1 + 1\right) \cdot \left(\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) + \left({x1}^{3} + \left(\left(x1 + 3 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 - 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right) + x1\right)\right)double f(double x1, double x2) {
double r83783 = x1;
double r83784 = 2.0;
double r83785 = r83784 * r83783;
double r83786 = 3.0;
double r83787 = r83786 * r83783;
double r83788 = r83787 * r83783;
double r83789 = x2;
double r83790 = r83784 * r83789;
double r83791 = r83788 + r83790;
double r83792 = r83791 - r83783;
double r83793 = r83783 * r83783;
double r83794 = 1.0;
double r83795 = r83793 + r83794;
double r83796 = r83792 / r83795;
double r83797 = r83785 * r83796;
double r83798 = r83796 - r83786;
double r83799 = r83797 * r83798;
double r83800 = 4.0;
double r83801 = r83800 * r83796;
double r83802 = 6.0;
double r83803 = r83801 - r83802;
double r83804 = r83793 * r83803;
double r83805 = r83799 + r83804;
double r83806 = r83805 * r83795;
double r83807 = r83788 * r83796;
double r83808 = r83806 + r83807;
double r83809 = r83793 * r83783;
double r83810 = r83808 + r83809;
double r83811 = r83810 + r83783;
double r83812 = r83788 - r83790;
double r83813 = r83812 - r83783;
double r83814 = r83813 / r83795;
double r83815 = r83786 * r83814;
double r83816 = r83811 + r83815;
double r83817 = r83783 + r83816;
return r83817;
}
double f(double x1, double x2) {
double r83818 = 1.0;
double r83819 = x1;
double r83820 = r83819 * r83819;
double r83821 = 1.0;
double r83822 = r83820 + r83821;
double r83823 = sqrt(r83822);
double r83824 = sqrt(r83823);
double r83825 = r83818 / r83824;
double r83826 = 3.0;
double r83827 = r83826 * r83819;
double r83828 = r83827 * r83819;
double r83829 = 2.0;
double r83830 = x2;
double r83831 = r83829 * r83830;
double r83832 = r83828 + r83831;
double r83833 = r83832 - r83819;
double r83834 = r83833 / r83822;
double r83835 = r83834 - r83826;
double r83836 = r83829 * r83819;
double r83837 = r83835 * r83836;
double r83838 = r83837 * r83822;
double r83839 = r83828 + r83838;
double r83840 = r83833 / r83823;
double r83841 = r83839 * r83840;
double r83842 = r83841 / r83824;
double r83843 = r83825 * r83842;
double r83844 = 4.0;
double r83845 = r83844 * r83834;
double r83846 = 6.0;
double r83847 = r83845 - r83846;
double r83848 = r83820 * r83847;
double r83849 = r83822 * r83848;
double r83850 = r83843 + r83849;
double r83851 = 3.0;
double r83852 = pow(r83819, r83851);
double r83853 = r83828 - r83831;
double r83854 = r83853 - r83819;
double r83855 = r83854 / r83822;
double r83856 = r83826 * r83855;
double r83857 = r83819 + r83856;
double r83858 = r83857 + r83819;
double r83859 = r83852 + r83858;
double r83860 = r83850 + r83859;
return r83860;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
Simplified0.5
rmApplied add-sqr-sqrt0.5
Applied *-un-lft-identity0.5
Applied times-frac0.5
Applied associate-*l*0.9
rmApplied add-sqr-sqrt0.9
Applied sqrt-prod0.9
Applied *-un-lft-identity0.9
Applied times-frac0.9
Applied associate-*l*0.9
Simplified0.9
Final simplification0.9
herbie shell --seed 2019303
(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))))))