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)\left(\left(x1 + \left(x1 \cdot \left(x1 \cdot x1\right) + \left(\left(\left(3 \cdot x1\right) \cdot x1\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} + \left(1 + x1 \cdot x1\right) \cdot \left(\left(x1 \cdot \left(x1 \cdot \left(4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1}\right)\right) + \left(-\left(x1 \cdot x1\right) \cdot 6\right)\right) + \left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 3\right) \cdot \left(\left(x1 \cdot 2\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1}\right)\right)\right)\right)\right) + \frac{\left(\left(3 \cdot x1\right) \cdot x1 - x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} \cdot 3\right) + x1double f(double x1, double x2) {
double r2623644 = x1;
double r2623645 = 2.0;
double r2623646 = r2623645 * r2623644;
double r2623647 = 3.0;
double r2623648 = r2623647 * r2623644;
double r2623649 = r2623648 * r2623644;
double r2623650 = x2;
double r2623651 = r2623645 * r2623650;
double r2623652 = r2623649 + r2623651;
double r2623653 = r2623652 - r2623644;
double r2623654 = r2623644 * r2623644;
double r2623655 = 1.0;
double r2623656 = r2623654 + r2623655;
double r2623657 = r2623653 / r2623656;
double r2623658 = r2623646 * r2623657;
double r2623659 = r2623657 - r2623647;
double r2623660 = r2623658 * r2623659;
double r2623661 = 4.0;
double r2623662 = r2623661 * r2623657;
double r2623663 = 6.0;
double r2623664 = r2623662 - r2623663;
double r2623665 = r2623654 * r2623664;
double r2623666 = r2623660 + r2623665;
double r2623667 = r2623666 * r2623656;
double r2623668 = r2623649 * r2623657;
double r2623669 = r2623667 + r2623668;
double r2623670 = r2623654 * r2623644;
double r2623671 = r2623669 + r2623670;
double r2623672 = r2623671 + r2623644;
double r2623673 = r2623649 - r2623651;
double r2623674 = r2623673 - r2623644;
double r2623675 = r2623674 / r2623656;
double r2623676 = r2623647 * r2623675;
double r2623677 = r2623672 + r2623676;
double r2623678 = r2623644 + r2623677;
return r2623678;
}
double f(double x1, double x2) {
double r2623679 = x1;
double r2623680 = r2623679 * r2623679;
double r2623681 = r2623679 * r2623680;
double r2623682 = 3.0;
double r2623683 = r2623682 * r2623679;
double r2623684 = r2623683 * r2623679;
double r2623685 = x2;
double r2623686 = 2.0;
double r2623687 = r2623685 * r2623686;
double r2623688 = r2623684 + r2623687;
double r2623689 = r2623688 - r2623679;
double r2623690 = 1.0;
double r2623691 = r2623690 + r2623680;
double r2623692 = r2623689 / r2623691;
double r2623693 = r2623684 * r2623692;
double r2623694 = 4.0;
double r2623695 = r2623694 * r2623692;
double r2623696 = r2623679 * r2623695;
double r2623697 = r2623679 * r2623696;
double r2623698 = 6.0;
double r2623699 = r2623680 * r2623698;
double r2623700 = -r2623699;
double r2623701 = r2623697 + r2623700;
double r2623702 = r2623692 - r2623682;
double r2623703 = r2623679 * r2623686;
double r2623704 = r2623703 * r2623692;
double r2623705 = r2623702 * r2623704;
double r2623706 = r2623701 + r2623705;
double r2623707 = r2623691 * r2623706;
double r2623708 = r2623693 + r2623707;
double r2623709 = r2623681 + r2623708;
double r2623710 = r2623679 + r2623709;
double r2623711 = r2623684 - r2623687;
double r2623712 = r2623711 - r2623679;
double r2623713 = r2623712 / r2623691;
double r2623714 = r2623713 * r2623682;
double r2623715 = r2623710 + r2623714;
double r2623716 = r2623715 + r2623679;
return r2623716;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
rmApplied sub-neg0.5
Applied distribute-rgt-in0.5
rmApplied associate-*r*0.5
Final simplification0.5
herbie shell --seed 2019172
(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))))))