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(\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(\left(3 \cdot x1\right) \cdot x1\right) \cdot \left(\sqrt[3]{\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}} \cdot \sqrt[3]{\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}}\right)\right) \cdot \sqrt[3]{\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 r52112 = x1;
double r52113 = 2.0;
double r52114 = r52113 * r52112;
double r52115 = 3.0;
double r52116 = r52115 * r52112;
double r52117 = r52116 * r52112;
double r52118 = x2;
double r52119 = r52113 * r52118;
double r52120 = r52117 + r52119;
double r52121 = r52120 - r52112;
double r52122 = r52112 * r52112;
double r52123 = 1.0;
double r52124 = r52122 + r52123;
double r52125 = r52121 / r52124;
double r52126 = r52114 * r52125;
double r52127 = r52125 - r52115;
double r52128 = r52126 * r52127;
double r52129 = 4.0;
double r52130 = r52129 * r52125;
double r52131 = 6.0;
double r52132 = r52130 - r52131;
double r52133 = r52122 * r52132;
double r52134 = r52128 + r52133;
double r52135 = r52134 * r52124;
double r52136 = r52117 * r52125;
double r52137 = r52135 + r52136;
double r52138 = r52122 * r52112;
double r52139 = r52137 + r52138;
double r52140 = r52139 + r52112;
double r52141 = r52117 - r52119;
double r52142 = r52141 - r52112;
double r52143 = r52142 / r52124;
double r52144 = r52115 * r52143;
double r52145 = r52140 + r52144;
double r52146 = r52112 + r52145;
return r52146;
}
double f(double x1, double x2) {
double r52147 = x1;
double r52148 = 2.0;
double r52149 = r52148 * r52147;
double r52150 = 3.0;
double r52151 = r52150 * r52147;
double r52152 = r52151 * r52147;
double r52153 = x2;
double r52154 = r52148 * r52153;
double r52155 = r52152 + r52154;
double r52156 = r52155 - r52147;
double r52157 = r52147 * r52147;
double r52158 = 1.0;
double r52159 = r52157 + r52158;
double r52160 = r52156 / r52159;
double r52161 = r52149 * r52160;
double r52162 = r52160 - r52150;
double r52163 = r52161 * r52162;
double r52164 = 4.0;
double r52165 = r52164 * r52160;
double r52166 = 6.0;
double r52167 = r52165 - r52166;
double r52168 = r52157 * r52167;
double r52169 = r52163 + r52168;
double r52170 = r52169 * r52159;
double r52171 = cbrt(r52160);
double r52172 = r52171 * r52171;
double r52173 = r52152 * r52172;
double r52174 = r52173 * r52171;
double r52175 = r52170 + r52174;
double r52176 = r52157 * r52147;
double r52177 = r52175 + r52176;
double r52178 = r52177 + r52147;
double r52179 = r52152 - r52154;
double r52180 = r52179 - r52147;
double r52181 = r52180 / r52159;
double r52182 = r52150 * r52181;
double r52183 = r52178 + r52182;
double r52184 = r52147 + r52183;
return r52184;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
rmApplied add-cube-cbrt0.5
Applied associate-*r*0.5
Final simplification0.5
herbie shell --seed 2019318
(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))))))