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(3 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 - x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} + \left(x1 + \left(\left(\left(\left(3 \cdot x1\right) \cdot x1\right) \cdot \frac{\left(x2 \cdot 2 + \left(3 \cdot x1\right) \cdot x1\right) - x1}{1 + x1 \cdot x1} + \left(\left(\frac{\left(x2 \cdot 2 + \left(3 \cdot x1\right) \cdot x1\right) - x1}{1 + x1 \cdot x1} - 3\right) \cdot \left(\left(x1 \cdot 2\right) \cdot \frac{\left(x2 \cdot 2 + \left(3 \cdot x1\right) \cdot x1\right) - x1}{1 + x1 \cdot x1}\right) + \sqrt[3]{\left(4 \cdot \frac{\mathsf{fma}\left(3 \cdot x1, x1, x2 \cdot 2\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)} - 6\right) \cdot \left(x1 \cdot x1\right)} \cdot \left(\sqrt[3]{\left(4 \cdot \frac{\mathsf{fma}\left(3 \cdot x1, x1, x2 \cdot 2\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)} - 6\right) \cdot \left(x1 \cdot x1\right)} \cdot \sqrt[3]{\left(4 \cdot \frac{\mathsf{fma}\left(3 \cdot x1, x1, x2 \cdot 2\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)} - 6\right) \cdot \left(x1 \cdot x1\right)}\right)\right) \cdot \left(1 + x1 \cdot x1\right)\right) + x1 \cdot \left(x1 \cdot x1\right)\right)\right)\right)double f(double x1, double x2) {
double r79654 = x1;
double r79655 = 2.0;
double r79656 = r79655 * r79654;
double r79657 = 3.0;
double r79658 = r79657 * r79654;
double r79659 = r79658 * r79654;
double r79660 = x2;
double r79661 = r79655 * r79660;
double r79662 = r79659 + r79661;
double r79663 = r79662 - r79654;
double r79664 = r79654 * r79654;
double r79665 = 1.0;
double r79666 = r79664 + r79665;
double r79667 = r79663 / r79666;
double r79668 = r79656 * r79667;
double r79669 = r79667 - r79657;
double r79670 = r79668 * r79669;
double r79671 = 4.0;
double r79672 = r79671 * r79667;
double r79673 = 6.0;
double r79674 = r79672 - r79673;
double r79675 = r79664 * r79674;
double r79676 = r79670 + r79675;
double r79677 = r79676 * r79666;
double r79678 = r79659 * r79667;
double r79679 = r79677 + r79678;
double r79680 = r79664 * r79654;
double r79681 = r79679 + r79680;
double r79682 = r79681 + r79654;
double r79683 = r79659 - r79661;
double r79684 = r79683 - r79654;
double r79685 = r79684 / r79666;
double r79686 = r79657 * r79685;
double r79687 = r79682 + r79686;
double r79688 = r79654 + r79687;
return r79688;
}
double f(double x1, double x2) {
double r79689 = x1;
double r79690 = 3.0;
double r79691 = r79690 * r79689;
double r79692 = r79691 * r79689;
double r79693 = x2;
double r79694 = 2.0;
double r79695 = r79693 * r79694;
double r79696 = r79692 - r79695;
double r79697 = r79696 - r79689;
double r79698 = 1.0;
double r79699 = r79689 * r79689;
double r79700 = r79698 + r79699;
double r79701 = r79697 / r79700;
double r79702 = r79690 * r79701;
double r79703 = r79695 + r79692;
double r79704 = r79703 - r79689;
double r79705 = r79704 / r79700;
double r79706 = r79692 * r79705;
double r79707 = r79705 - r79690;
double r79708 = r79689 * r79694;
double r79709 = r79708 * r79705;
double r79710 = r79707 * r79709;
double r79711 = 4.0;
double r79712 = fma(r79691, r79689, r79695);
double r79713 = r79712 - r79689;
double r79714 = fma(r79689, r79689, r79698);
double r79715 = r79713 / r79714;
double r79716 = r79711 * r79715;
double r79717 = 6.0;
double r79718 = r79716 - r79717;
double r79719 = r79718 * r79699;
double r79720 = cbrt(r79719);
double r79721 = r79720 * r79720;
double r79722 = r79720 * r79721;
double r79723 = r79710 + r79722;
double r79724 = r79723 * r79700;
double r79725 = r79706 + r79724;
double r79726 = r79689 * r79699;
double r79727 = r79725 + r79726;
double r79728 = r79689 + r79727;
double r79729 = r79702 + r79728;
double r79730 = r79689 + r79729;
return r79730;
}



Bits error versus x1



Bits error versus x2
Initial program 0.5
rmApplied add-cube-cbrt0.6
Simplified0.6
Simplified0.6
Final simplification0.6
herbie shell --seed 2019174 +o rules:numerics
(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))))))