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(x1 + \left(x1 \cdot \left(x1 \cdot x1\right) + \left(\left(\left(3 \cdot x1\right) \cdot x1\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} + \left(1 + x1 \cdot x1\right) \cdot \left(\left(\sqrt[3]{\left(4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 6\right) \cdot \left(x1 \cdot x1\right)} \cdot \sqrt[3]{\left(4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 6\right) \cdot \left(x1 \cdot x1\right)}\right) \cdot \sqrt[3]{\left(4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 6\right) \cdot \left(x1 \cdot x1\right)} + \left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 3\right) \cdot \left(\left(x1 \cdot 2\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1}\right)\right)\right)\right)\right) + \frac{\left(\left(3 \cdot x1\right) \cdot x1 - x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} \cdot 3\right) + x1double f(double x1, double x2) {
double r1166442 = x1;
double r1166443 = 2.0;
double r1166444 = r1166443 * r1166442;
double r1166445 = 3.0;
double r1166446 = r1166445 * r1166442;
double r1166447 = r1166446 * r1166442;
double r1166448 = x2;
double r1166449 = r1166443 * r1166448;
double r1166450 = r1166447 + r1166449;
double r1166451 = r1166450 - r1166442;
double r1166452 = r1166442 * r1166442;
double r1166453 = 1.0;
double r1166454 = r1166452 + r1166453;
double r1166455 = r1166451 / r1166454;
double r1166456 = r1166444 * r1166455;
double r1166457 = r1166455 - r1166445;
double r1166458 = r1166456 * r1166457;
double r1166459 = 4.0;
double r1166460 = r1166459 * r1166455;
double r1166461 = 6.0;
double r1166462 = r1166460 - r1166461;
double r1166463 = r1166452 * r1166462;
double r1166464 = r1166458 + r1166463;
double r1166465 = r1166464 * r1166454;
double r1166466 = r1166447 * r1166455;
double r1166467 = r1166465 + r1166466;
double r1166468 = r1166452 * r1166442;
double r1166469 = r1166467 + r1166468;
double r1166470 = r1166469 + r1166442;
double r1166471 = r1166447 - r1166449;
double r1166472 = r1166471 - r1166442;
double r1166473 = r1166472 / r1166454;
double r1166474 = r1166445 * r1166473;
double r1166475 = r1166470 + r1166474;
double r1166476 = r1166442 + r1166475;
return r1166476;
}
double f(double x1, double x2) {
double r1166477 = x1;
double r1166478 = r1166477 * r1166477;
double r1166479 = r1166477 * r1166478;
double r1166480 = 3.0;
double r1166481 = r1166480 * r1166477;
double r1166482 = r1166481 * r1166477;
double r1166483 = x2;
double r1166484 = 2.0;
double r1166485 = r1166483 * r1166484;
double r1166486 = r1166482 + r1166485;
double r1166487 = r1166486 - r1166477;
double r1166488 = 1.0;
double r1166489 = r1166488 + r1166478;
double r1166490 = r1166487 / r1166489;
double r1166491 = r1166482 * r1166490;
double r1166492 = 4.0;
double r1166493 = r1166492 * r1166490;
double r1166494 = 6.0;
double r1166495 = r1166493 - r1166494;
double r1166496 = r1166495 * r1166478;
double r1166497 = cbrt(r1166496);
double r1166498 = r1166497 * r1166497;
double r1166499 = r1166498 * r1166497;
double r1166500 = r1166490 - r1166480;
double r1166501 = r1166477 * r1166484;
double r1166502 = r1166501 * r1166490;
double r1166503 = r1166500 * r1166502;
double r1166504 = r1166499 + r1166503;
double r1166505 = r1166489 * r1166504;
double r1166506 = r1166491 + r1166505;
double r1166507 = r1166479 + r1166506;
double r1166508 = r1166477 + r1166507;
double r1166509 = r1166482 - r1166485;
double r1166510 = r1166509 - r1166477;
double r1166511 = r1166510 / r1166489;
double r1166512 = r1166511 * r1166480;
double r1166513 = r1166508 + r1166512;
double r1166514 = r1166513 + r1166477;
return r1166514;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
rmApplied add-cube-cbrt0.6
Final simplification0.6
herbie shell --seed 2019153
(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))))))