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(\left(\sqrt[3]{\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 3} \cdot \sqrt[3]{\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 3}\right) \cdot \sqrt[3]{\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)double f(double x1, double x2) {
double r49636 = x1;
double r49637 = 2.0;
double r49638 = r49637 * r49636;
double r49639 = 3.0;
double r49640 = r49639 * r49636;
double r49641 = r49640 * r49636;
double r49642 = x2;
double r49643 = r49637 * r49642;
double r49644 = r49641 + r49643;
double r49645 = r49644 - r49636;
double r49646 = r49636 * r49636;
double r49647 = 1.0;
double r49648 = r49646 + r49647;
double r49649 = r49645 / r49648;
double r49650 = r49638 * r49649;
double r49651 = r49649 - r49639;
double r49652 = r49650 * r49651;
double r49653 = 4.0;
double r49654 = r49653 * r49649;
double r49655 = 6.0;
double r49656 = r49654 - r49655;
double r49657 = r49646 * r49656;
double r49658 = r49652 + r49657;
double r49659 = r49658 * r49648;
double r49660 = r49641 * r49649;
double r49661 = r49659 + r49660;
double r49662 = r49646 * r49636;
double r49663 = r49661 + r49662;
double r49664 = r49663 + r49636;
double r49665 = r49641 - r49643;
double r49666 = r49665 - r49636;
double r49667 = r49666 / r49648;
double r49668 = r49639 * r49667;
double r49669 = r49664 + r49668;
double r49670 = r49636 + r49669;
return r49670;
}
double f(double x1, double x2) {
double r49671 = x1;
double r49672 = 2.0;
double r49673 = r49672 * r49671;
double r49674 = 3.0;
double r49675 = r49674 * r49671;
double r49676 = r49675 * r49671;
double r49677 = x2;
double r49678 = r49672 * r49677;
double r49679 = r49676 + r49678;
double r49680 = r49679 - r49671;
double r49681 = r49671 * r49671;
double r49682 = 1.0;
double r49683 = r49681 + r49682;
double r49684 = r49680 / r49683;
double r49685 = r49673 * r49684;
double r49686 = r49684 - r49674;
double r49687 = cbrt(r49686);
double r49688 = r49687 * r49687;
double r49689 = r49688 * r49687;
double r49690 = r49685 * r49689;
double r49691 = 4.0;
double r49692 = r49691 * r49684;
double r49693 = 6.0;
double r49694 = r49692 - r49693;
double r49695 = r49681 * r49694;
double r49696 = r49690 + r49695;
double r49697 = r49696 * r49683;
double r49698 = r49676 * r49684;
double r49699 = r49697 + r49698;
double r49700 = r49681 * r49671;
double r49701 = r49699 + r49700;
double r49702 = r49701 + r49671;
double r49703 = r49676 - r49678;
double r49704 = r49703 - r49671;
double r49705 = r49704 / r49683;
double r49706 = r49674 * r49705;
double r49707 = r49702 + r49706;
double r49708 = r49671 + r49707;
return r49708;
}



Bits error versus x1



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