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)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(\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]{\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]{\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)double f(double x1, double x2) {
double r3406565 = x1;
double r3406566 = 2.0;
double r3406567 = r3406566 * r3406565;
double r3406568 = 3.0;
double r3406569 = r3406568 * r3406565;
double r3406570 = r3406569 * r3406565;
double r3406571 = x2;
double r3406572 = r3406566 * r3406571;
double r3406573 = r3406570 + r3406572;
double r3406574 = r3406573 - r3406565;
double r3406575 = r3406565 * r3406565;
double r3406576 = 1.0;
double r3406577 = r3406575 + r3406576;
double r3406578 = r3406574 / r3406577;
double r3406579 = r3406567 * r3406578;
double r3406580 = r3406578 - r3406568;
double r3406581 = r3406579 * r3406580;
double r3406582 = 4.0;
double r3406583 = r3406582 * r3406578;
double r3406584 = 6.0;
double r3406585 = r3406583 - r3406584;
double r3406586 = r3406575 * r3406585;
double r3406587 = r3406581 + r3406586;
double r3406588 = r3406587 * r3406577;
double r3406589 = r3406570 * r3406578;
double r3406590 = r3406588 + r3406589;
double r3406591 = r3406575 * r3406565;
double r3406592 = r3406590 + r3406591;
double r3406593 = r3406592 + r3406565;
double r3406594 = r3406570 - r3406572;
double r3406595 = r3406594 - r3406565;
double r3406596 = r3406595 / r3406577;
double r3406597 = r3406568 * r3406596;
double r3406598 = r3406593 + r3406597;
double r3406599 = r3406565 + r3406598;
return r3406599;
}
double f(double x1, double x2) {
double r3406600 = x1;
double r3406601 = 2.0;
double r3406602 = r3406601 * r3406600;
double r3406603 = 3.0;
double r3406604 = r3406603 * r3406600;
double r3406605 = r3406604 * r3406600;
double r3406606 = x2;
double r3406607 = r3406601 * r3406606;
double r3406608 = r3406605 + r3406607;
double r3406609 = r3406608 - r3406600;
double r3406610 = r3406600 * r3406600;
double r3406611 = 1.0;
double r3406612 = r3406610 + r3406611;
double r3406613 = r3406609 / r3406612;
double r3406614 = r3406602 * r3406613;
double r3406615 = r3406613 - r3406603;
double r3406616 = r3406614 * r3406615;
double r3406617 = 4.0;
double r3406618 = r3406617 * r3406613;
double r3406619 = 6.0;
double r3406620 = r3406618 - r3406619;
double r3406621 = r3406610 * r3406620;
double r3406622 = cbrt(r3406621);
double r3406623 = r3406622 * r3406622;
double r3406624 = r3406623 * r3406622;
double r3406625 = r3406616 + r3406624;
double r3406626 = r3406625 * r3406612;
double r3406627 = r3406605 * r3406613;
double r3406628 = r3406626 + r3406627;
double r3406629 = r3406610 * r3406600;
double r3406630 = r3406628 + r3406629;
double r3406631 = r3406630 + r3406600;
double r3406632 = r3406605 - r3406607;
double r3406633 = r3406632 - r3406600;
double r3406634 = r3406633 / r3406612;
double r3406635 = r3406603 * r3406634;
double r3406636 = r3406631 + r3406635;
double r3406637 = r3406600 + r3406636;
return r3406637;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
rmApplied add-cube-cbrt0.6
Final simplification0.6
herbie shell --seed 2019174
(FPCore (x1 x2)
:name "Rosa's FloatVsDoubleBenchmark"
(+ x1 (+ (+ (+ (+ (* (+ (* (* (* 2.0 x1) (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0))) (- (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0)) 3.0)) (* (* x1 x1) (- (* 4.0 (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0))) 6.0))) (+ (* x1 x1) 1.0)) (* (* (* 3.0 x1) x1) (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0)))) (* (* x1 x1) x1)) x1) (* 3.0 (/ (- (- (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0))))))