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(\left(\sqrt[3]{\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 \sqrt[3]{\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) \cdot \sqrt[3]{\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)\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 r50513 = x1;
double r50514 = 2.0;
double r50515 = r50514 * r50513;
double r50516 = 3.0;
double r50517 = r50516 * r50513;
double r50518 = r50517 * r50513;
double r50519 = x2;
double r50520 = r50514 * r50519;
double r50521 = r50518 + r50520;
double r50522 = r50521 - r50513;
double r50523 = r50513 * r50513;
double r50524 = 1.0;
double r50525 = r50523 + r50524;
double r50526 = r50522 / r50525;
double r50527 = r50515 * r50526;
double r50528 = r50526 - r50516;
double r50529 = r50527 * r50528;
double r50530 = 4.0;
double r50531 = r50530 * r50526;
double r50532 = 6.0;
double r50533 = r50531 - r50532;
double r50534 = r50523 * r50533;
double r50535 = r50529 + r50534;
double r50536 = r50535 * r50525;
double r50537 = r50518 * r50526;
double r50538 = r50536 + r50537;
double r50539 = r50523 * r50513;
double r50540 = r50538 + r50539;
double r50541 = r50540 + r50513;
double r50542 = r50518 - r50520;
double r50543 = r50542 - r50513;
double r50544 = r50543 / r50525;
double r50545 = r50516 * r50544;
double r50546 = r50541 + r50545;
double r50547 = r50513 + r50546;
return r50547;
}
double f(double x1, double x2) {
double r50548 = 3.0;
double r50549 = x1;
double r50550 = 1.0;
double r50551 = fma(r50549, r50549, r50550);
double r50552 = r50548 / r50551;
double r50553 = r50549 * r50549;
double r50554 = x2;
double r50555 = 2.0;
double r50556 = fma(r50554, r50555, r50549);
double r50557 = -r50556;
double r50558 = fma(r50548, r50553, r50557);
double r50559 = r50555 * r50554;
double r50560 = r50559 - r50549;
double r50561 = fma(r50548, r50553, r50560);
double r50562 = r50548 * r50549;
double r50563 = r50562 * r50549;
double r50564 = r50561 * r50563;
double r50565 = r50564 / r50551;
double r50566 = r50549 + r50565;
double r50567 = r50563 + r50559;
double r50568 = r50567 - r50549;
double r50569 = r50553 + r50550;
double r50570 = r50568 / r50569;
double r50571 = r50570 - r50548;
double r50572 = r50571 * r50555;
double r50573 = r50549 * r50561;
double r50574 = r50573 / r50551;
double r50575 = 4.0;
double r50576 = r50575 * r50570;
double r50577 = 6.0;
double r50578 = r50576 - r50577;
double r50579 = r50553 * r50578;
double r50580 = cbrt(r50579);
double r50581 = cbrt(r50580);
double r50582 = r50581 * r50581;
double r50583 = r50582 * r50581;
double r50584 = r50580 * r50583;
double r50585 = r50584 * r50580;
double r50586 = fma(r50572, r50574, r50585);
double r50587 = fma(r50549, r50553, r50549);
double r50588 = fma(r50586, r50551, r50587);
double r50589 = r50566 + r50588;
double r50590 = fma(r50552, r50558, r50589);
return r50590;
}



Bits error versus x1



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