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(\left(\left(\left(x1 \cdot x1\right) \cdot \left(\frac{\left(x2 \cdot 2 + \left(3 \cdot x1\right) \cdot x1\right) - x1}{x1 \cdot x1 + 1} \cdot 4 - 6\right) + \left(\left(2 \cdot x1\right) \cdot \frac{\left(x2 \cdot 2 + \left(3 \cdot x1\right) \cdot x1\right) - x1}{x1 \cdot x1 + 1}\right) \cdot \mathsf{fma}\left(\frac{1}{\sqrt[3]{x1 \cdot x1 + 1} \cdot \sqrt[3]{x1 \cdot x1 + 1}}, \frac{\left(x2 \cdot 2 + \left(3 \cdot x1\right) \cdot x1\right) - x1}{\sqrt[3]{x1 \cdot x1 + 1}}, -3\right)\right) \cdot \left(x1 \cdot x1 + 1\right) + \frac{\left(x2 \cdot 2 + \left(3 \cdot x1\right) \cdot x1\right) - x1}{x1 \cdot x1 + 1} \cdot \left(\left(3 \cdot x1\right) \cdot x1\right)\right) + x1 \cdot \left(x1 \cdot x1\right)\right) + x1\right) + \frac{\left(\left(3 \cdot x1\right) \cdot x1 - x2 \cdot 2\right) - x1}{x1 \cdot x1 + 1} \cdot 3\right) + x1double f(double x1, double x2) {
double r2605244 = x1;
double r2605245 = 2.0;
double r2605246 = r2605245 * r2605244;
double r2605247 = 3.0;
double r2605248 = r2605247 * r2605244;
double r2605249 = r2605248 * r2605244;
double r2605250 = x2;
double r2605251 = r2605245 * r2605250;
double r2605252 = r2605249 + r2605251;
double r2605253 = r2605252 - r2605244;
double r2605254 = r2605244 * r2605244;
double r2605255 = 1.0;
double r2605256 = r2605254 + r2605255;
double r2605257 = r2605253 / r2605256;
double r2605258 = r2605246 * r2605257;
double r2605259 = r2605257 - r2605247;
double r2605260 = r2605258 * r2605259;
double r2605261 = 4.0;
double r2605262 = r2605261 * r2605257;
double r2605263 = 6.0;
double r2605264 = r2605262 - r2605263;
double r2605265 = r2605254 * r2605264;
double r2605266 = r2605260 + r2605265;
double r2605267 = r2605266 * r2605256;
double r2605268 = r2605249 * r2605257;
double r2605269 = r2605267 + r2605268;
double r2605270 = r2605254 * r2605244;
double r2605271 = r2605269 + r2605270;
double r2605272 = r2605271 + r2605244;
double r2605273 = r2605249 - r2605251;
double r2605274 = r2605273 - r2605244;
double r2605275 = r2605274 / r2605256;
double r2605276 = r2605247 * r2605275;
double r2605277 = r2605272 + r2605276;
double r2605278 = r2605244 + r2605277;
return r2605278;
}
double f(double x1, double x2) {
double r2605279 = x1;
double r2605280 = r2605279 * r2605279;
double r2605281 = x2;
double r2605282 = 2.0;
double r2605283 = r2605281 * r2605282;
double r2605284 = 3.0;
double r2605285 = r2605284 * r2605279;
double r2605286 = r2605285 * r2605279;
double r2605287 = r2605283 + r2605286;
double r2605288 = r2605287 - r2605279;
double r2605289 = 1.0;
double r2605290 = r2605280 + r2605289;
double r2605291 = r2605288 / r2605290;
double r2605292 = 4.0;
double r2605293 = r2605291 * r2605292;
double r2605294 = 6.0;
double r2605295 = r2605293 - r2605294;
double r2605296 = r2605280 * r2605295;
double r2605297 = r2605282 * r2605279;
double r2605298 = r2605297 * r2605291;
double r2605299 = 1.0;
double r2605300 = cbrt(r2605290);
double r2605301 = r2605300 * r2605300;
double r2605302 = r2605299 / r2605301;
double r2605303 = r2605288 / r2605300;
double r2605304 = -r2605284;
double r2605305 = fma(r2605302, r2605303, r2605304);
double r2605306 = r2605298 * r2605305;
double r2605307 = r2605296 + r2605306;
double r2605308 = r2605307 * r2605290;
double r2605309 = r2605291 * r2605286;
double r2605310 = r2605308 + r2605309;
double r2605311 = r2605279 * r2605280;
double r2605312 = r2605310 + r2605311;
double r2605313 = r2605312 + r2605279;
double r2605314 = r2605286 - r2605283;
double r2605315 = r2605314 - r2605279;
double r2605316 = r2605315 / r2605290;
double r2605317 = r2605316 * r2605284;
double r2605318 = r2605313 + r2605317;
double r2605319 = r2605318 + r2605279;
return r2605319;
}



Bits error versus x1



Bits error versus x2
Initial program 0.5
rmApplied add-cube-cbrt0.5
Applied *-un-lft-identity0.5
Applied times-frac0.5
Applied fma-neg0.5
Final simplification0.5
herbie shell --seed 2019200 +o rules:numerics
(FPCore (x1 x2)
:name "Rosa's FloatVsDoubleBenchmark"
(+ x1 (+ (+ (+ (+ (* (+ (* (* (* 2.0 x1) (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0))) (- (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0)) 3.0)) (* (* x1 x1) (- (* 4.0 (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0))) 6.0))) (+ (* x1 x1) 1.0)) (* (* (* 3.0 x1) x1) (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0)))) (* (* x1 x1) x1)) x1) (* 3.0 (/ (- (- (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0))))))