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{x2 \cdot -2 + \left(\left(x1 \cdot x1\right) \cdot 3 - x1\right)}{1 + x1 \cdot x1} \cdot 3 + x1\right) + \left(\left(\left(x1 \cdot x1\right) \cdot 3 + \left(x1 \cdot \left(\frac{2 \cdot x2 - \left(x1 - \left(x1 \cdot x1\right) \cdot 3\right)}{1 + x1 \cdot x1} - 3\right)\right) \cdot \left(2 \cdot \left(1 + x1 \cdot x1\right)\right)\right) \cdot \frac{2 \cdot x2 - \left(x1 - \left(x1 \cdot x1\right) \cdot 3\right)}{1 + x1 \cdot x1} + \left(x1 + \left(\left(x1 \cdot x1\right) \cdot \left(\sqrt[3]{\left(2 \cdot x2 - \left(x1 - \left(x1 \cdot x1\right) \cdot 3\right)\right) \cdot \frac{4}{1 + x1 \cdot x1} + -6} \cdot \sqrt[3]{\left(2 \cdot x2 - \left(x1 - \left(x1 \cdot x1\right) \cdot 3\right)\right) \cdot \frac{4}{1 + x1 \cdot x1} + -6}\right)\right) \cdot \sqrt[3]{\left(2 \cdot x2 - \left(x1 - \left(x1 \cdot x1\right) \cdot 3\right)\right) \cdot \frac{4}{1 + x1 \cdot x1} + -6}\right) \cdot \left(1 + x1 \cdot x1\right)\right)double f(double x1, double x2) {
double r2810402 = x1;
double r2810403 = 2.0;
double r2810404 = r2810403 * r2810402;
double r2810405 = 3.0;
double r2810406 = r2810405 * r2810402;
double r2810407 = r2810406 * r2810402;
double r2810408 = x2;
double r2810409 = r2810403 * r2810408;
double r2810410 = r2810407 + r2810409;
double r2810411 = r2810410 - r2810402;
double r2810412 = r2810402 * r2810402;
double r2810413 = 1.0;
double r2810414 = r2810412 + r2810413;
double r2810415 = r2810411 / r2810414;
double r2810416 = r2810404 * r2810415;
double r2810417 = r2810415 - r2810405;
double r2810418 = r2810416 * r2810417;
double r2810419 = 4.0;
double r2810420 = r2810419 * r2810415;
double r2810421 = 6.0;
double r2810422 = r2810420 - r2810421;
double r2810423 = r2810412 * r2810422;
double r2810424 = r2810418 + r2810423;
double r2810425 = r2810424 * r2810414;
double r2810426 = r2810407 * r2810415;
double r2810427 = r2810425 + r2810426;
double r2810428 = r2810412 * r2810402;
double r2810429 = r2810427 + r2810428;
double r2810430 = r2810429 + r2810402;
double r2810431 = r2810407 - r2810409;
double r2810432 = r2810431 - r2810402;
double r2810433 = r2810432 / r2810414;
double r2810434 = r2810405 * r2810433;
double r2810435 = r2810430 + r2810434;
double r2810436 = r2810402 + r2810435;
return r2810436;
}
double f(double x1, double x2) {
double r2810437 = x2;
double r2810438 = -2.0;
double r2810439 = r2810437 * r2810438;
double r2810440 = x1;
double r2810441 = r2810440 * r2810440;
double r2810442 = 3.0;
double r2810443 = r2810441 * r2810442;
double r2810444 = r2810443 - r2810440;
double r2810445 = r2810439 + r2810444;
double r2810446 = 1.0;
double r2810447 = r2810446 + r2810441;
double r2810448 = r2810445 / r2810447;
double r2810449 = r2810448 * r2810442;
double r2810450 = r2810449 + r2810440;
double r2810451 = 2.0;
double r2810452 = r2810451 * r2810437;
double r2810453 = r2810440 - r2810443;
double r2810454 = r2810452 - r2810453;
double r2810455 = r2810454 / r2810447;
double r2810456 = r2810455 - r2810442;
double r2810457 = r2810440 * r2810456;
double r2810458 = r2810451 * r2810447;
double r2810459 = r2810457 * r2810458;
double r2810460 = r2810443 + r2810459;
double r2810461 = r2810460 * r2810455;
double r2810462 = 4.0;
double r2810463 = r2810462 / r2810447;
double r2810464 = r2810454 * r2810463;
double r2810465 = -6.0;
double r2810466 = r2810464 + r2810465;
double r2810467 = cbrt(r2810466);
double r2810468 = r2810467 * r2810467;
double r2810469 = r2810441 * r2810468;
double r2810470 = r2810469 * r2810467;
double r2810471 = r2810440 + r2810470;
double r2810472 = r2810471 * r2810447;
double r2810473 = r2810461 + r2810472;
double r2810474 = r2810450 + r2810473;
return r2810474;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
Simplified0.5
rmApplied add-cube-cbrt0.6
Applied associate-*r*0.6
Final simplification0.6
herbie shell --seed 2019146
(FPCore (x1 x2)
:name "Rosa's FloatVsDoubleBenchmark"
(+ 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))))))