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



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))))))