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)\mathsf{fma}\left(\frac{3}{\mathsf{fma}\left(x1, x1, 1\right)}, \mathsf{fma}\left(3, x1 \cdot x1, -\mathsf{fma}\left(x2, 2, x1\right)\right), \left(x1 + \frac{\left(\sqrt[3]{\mathsf{fma}\left(3, x1 \cdot x1, 2 \cdot x2 - x1\right) \cdot \left(\left(3 \cdot x1\right) \cdot x1\right)} \cdot \sqrt[3]{\mathsf{fma}\left(3, x1 \cdot x1, 2 \cdot x2 - x1\right) \cdot \left(\left(3 \cdot x1\right) \cdot x1\right)}\right) \cdot \sqrt[3]{\mathsf{fma}\left(3, x1 \cdot x1, 2 \cdot x2 - x1\right) \cdot \left(\left(3 \cdot x1\right) \cdot x1\right)}}{\mathsf{fma}\left(x1, x1, 1\right)}\right) + \mathsf{fma}\left(\mathsf{fma}\left(\left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 3\right) \cdot 2, \frac{x1 \cdot \mathsf{fma}\left(3, x1 \cdot x1, 2 \cdot x2 - x1\right)}{\mathsf{fma}\left(x1, 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), \mathsf{fma}\left(x1, x1, 1\right), \mathsf{fma}\left(x1, x1 \cdot x1, x1\right)\right)\right)double f(double x1, double x2) {
double r46806 = x1;
double r46807 = 2.0;
double r46808 = r46807 * r46806;
double r46809 = 3.0;
double r46810 = r46809 * r46806;
double r46811 = r46810 * r46806;
double r46812 = x2;
double r46813 = r46807 * r46812;
double r46814 = r46811 + r46813;
double r46815 = r46814 - r46806;
double r46816 = r46806 * r46806;
double r46817 = 1.0;
double r46818 = r46816 + r46817;
double r46819 = r46815 / r46818;
double r46820 = r46808 * r46819;
double r46821 = r46819 - r46809;
double r46822 = r46820 * r46821;
double r46823 = 4.0;
double r46824 = r46823 * r46819;
double r46825 = 6.0;
double r46826 = r46824 - r46825;
double r46827 = r46816 * r46826;
double r46828 = r46822 + r46827;
double r46829 = r46828 * r46818;
double r46830 = r46811 * r46819;
double r46831 = r46829 + r46830;
double r46832 = r46816 * r46806;
double r46833 = r46831 + r46832;
double r46834 = r46833 + r46806;
double r46835 = r46811 - r46813;
double r46836 = r46835 - r46806;
double r46837 = r46836 / r46818;
double r46838 = r46809 * r46837;
double r46839 = r46834 + r46838;
double r46840 = r46806 + r46839;
return r46840;
}
double f(double x1, double x2) {
double r46841 = 3.0;
double r46842 = x1;
double r46843 = 1.0;
double r46844 = fma(r46842, r46842, r46843);
double r46845 = r46841 / r46844;
double r46846 = r46842 * r46842;
double r46847 = x2;
double r46848 = 2.0;
double r46849 = fma(r46847, r46848, r46842);
double r46850 = -r46849;
double r46851 = fma(r46841, r46846, r46850);
double r46852 = r46848 * r46847;
double r46853 = r46852 - r46842;
double r46854 = fma(r46841, r46846, r46853);
double r46855 = r46841 * r46842;
double r46856 = r46855 * r46842;
double r46857 = r46854 * r46856;
double r46858 = cbrt(r46857);
double r46859 = r46858 * r46858;
double r46860 = r46859 * r46858;
double r46861 = r46860 / r46844;
double r46862 = r46842 + r46861;
double r46863 = r46856 + r46852;
double r46864 = r46863 - r46842;
double r46865 = r46846 + r46843;
double r46866 = r46864 / r46865;
double r46867 = r46866 - r46841;
double r46868 = r46867 * r46848;
double r46869 = r46842 * r46854;
double r46870 = r46869 / r46844;
double r46871 = 4.0;
double r46872 = r46871 * r46866;
double r46873 = 6.0;
double r46874 = r46872 - r46873;
double r46875 = r46846 * r46874;
double r46876 = fma(r46868, r46870, r46875);
double r46877 = fma(r46842, r46846, r46842);
double r46878 = fma(r46876, r46844, r46877);
double r46879 = r46862 + r46878;
double r46880 = fma(r46845, r46851, r46879);
return r46880;
}



Bits error versus x1



Bits error versus x2
Initial program 0.5
Simplified0.3
rmApplied add-cube-cbrt0.3
Final simplification0.3
herbie shell --seed 2020039 +o rules:numerics
(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))))))