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{\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(\sqrt[3]{\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)} \cdot \left(\sqrt[3]{x1 \cdot x1} \cdot \sqrt[3]{4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 6}\right)\right) \cdot \sqrt[3]{\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 r46476 = x1;
double r46477 = 2.0;
double r46478 = r46477 * r46476;
double r46479 = 3.0;
double r46480 = r46479 * r46476;
double r46481 = r46480 * r46476;
double r46482 = x2;
double r46483 = r46477 * r46482;
double r46484 = r46481 + r46483;
double r46485 = r46484 - r46476;
double r46486 = r46476 * r46476;
double r46487 = 1.0;
double r46488 = r46486 + r46487;
double r46489 = r46485 / r46488;
double r46490 = r46478 * r46489;
double r46491 = r46489 - r46479;
double r46492 = r46490 * r46491;
double r46493 = 4.0;
double r46494 = r46493 * r46489;
double r46495 = 6.0;
double r46496 = r46494 - r46495;
double r46497 = r46486 * r46496;
double r46498 = r46492 + r46497;
double r46499 = r46498 * r46488;
double r46500 = r46481 * r46489;
double r46501 = r46499 + r46500;
double r46502 = r46486 * r46476;
double r46503 = r46501 + r46502;
double r46504 = r46503 + r46476;
double r46505 = r46481 - r46483;
double r46506 = r46505 - r46476;
double r46507 = r46506 / r46488;
double r46508 = r46479 * r46507;
double r46509 = r46504 + r46508;
double r46510 = r46476 + r46509;
return r46510;
}
double f(double x1, double x2) {
double r46511 = 3.0;
double r46512 = x1;
double r46513 = 1.0;
double r46514 = fma(r46512, r46512, r46513);
double r46515 = r46511 / r46514;
double r46516 = r46512 * r46512;
double r46517 = x2;
double r46518 = 2.0;
double r46519 = fma(r46517, r46518, r46512);
double r46520 = -r46519;
double r46521 = fma(r46511, r46516, r46520);
double r46522 = r46518 * r46517;
double r46523 = r46522 - r46512;
double r46524 = fma(r46511, r46516, r46523);
double r46525 = r46511 * r46512;
double r46526 = r46525 * r46512;
double r46527 = r46524 * r46526;
double r46528 = r46527 / r46514;
double r46529 = r46512 + r46528;
double r46530 = r46526 + r46522;
double r46531 = r46530 - r46512;
double r46532 = r46516 + r46513;
double r46533 = r46531 / r46532;
double r46534 = r46533 - r46511;
double r46535 = r46534 * r46518;
double r46536 = r46512 * r46524;
double r46537 = r46536 / r46514;
double r46538 = 4.0;
double r46539 = r46538 * r46533;
double r46540 = 6.0;
double r46541 = r46539 - r46540;
double r46542 = r46516 * r46541;
double r46543 = cbrt(r46542);
double r46544 = cbrt(r46516);
double r46545 = cbrt(r46541);
double r46546 = r46544 * r46545;
double r46547 = r46543 * r46546;
double r46548 = r46547 * r46543;
double r46549 = fma(r46535, r46537, r46548);
double r46550 = fma(r46512, r46516, r46512);
double r46551 = fma(r46549, r46514, r46550);
double r46552 = r46529 + r46551;
double r46553 = fma(r46515, r46521, r46552);
return r46553;
}



Bits error versus x1



Bits error versus x2
Initial program 0.5
Simplified0.3
rmApplied add-cube-cbrt0.4
rmApplied cbrt-prod0.3
Final simplification0.3
herbie shell --seed 2020056 +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))))))