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(\left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 - x1\right) - x2 \cdot 2}{\mathsf{fma}\left(x1, x1, 1\right)}\right), 3, \left(x1 + \mathsf{fma}\left(\left(\mathsf{fma}\left(x1, x1, 1\right)\right), x1, \left(\mathsf{fma}\left(\left(\frac{\mathsf{fma}\left(3, \left(x1 \cdot x1\right), \left(x2 \cdot 2 - x1\right)\right)}{\mathsf{fma}\left(x1, x1, 1\right)}\right), \left(\left(3 \cdot x1\right) \cdot x1\right), \left(\mathsf{fma}\left(x1, x1, 1\right) \cdot \mathsf{fma}\left(\left(\mathsf{fma}\left(\left(\frac{\mathsf{fma}\left(3, \left(x1 \cdot x1\right), \left(x2 \cdot 2 - x1\right)\right)}{\mathsf{fma}\left(x1, x1, 1\right)}\right), 4, -6\right)\right), \left(x1 \cdot x1\right), \left(\left(\sqrt[3]{\frac{\mathsf{fma}\left(3, \left(x1 \cdot x1\right), \left(x2 \cdot 2 - x1\right)\right)}{\mathsf{fma}\left(x1, x1, 1\right)} - 3} \cdot \sqrt[3]{\frac{\mathsf{fma}\left(3, \left(x1 \cdot x1\right), \left(x2 \cdot 2 - x1\right)\right)}{\mathsf{fma}\left(x1, x1, 1\right)} - 3}\right) \cdot \left(\left(\left(2 \cdot x1\right) \cdot \frac{\mathsf{fma}\left(3, \left(x1 \cdot x1\right), \left(x2 \cdot 2 - x1\right)\right)}{\mathsf{fma}\left(x1, x1, 1\right)}\right) \cdot \sqrt[3]{\frac{\mathsf{fma}\left(3, \left(x1 \cdot x1\right), \left(x2 \cdot 2 - x1\right)\right)}{\mathsf{fma}\left(x1, x1, 1\right)} - 3}\right)\right)\right)\right)\right)\right)\right)\right)\right)double f(double x1, double x2) {
double r1207632 = x1;
double r1207633 = 2.0;
double r1207634 = r1207633 * r1207632;
double r1207635 = 3.0;
double r1207636 = r1207635 * r1207632;
double r1207637 = r1207636 * r1207632;
double r1207638 = x2;
double r1207639 = r1207633 * r1207638;
double r1207640 = r1207637 + r1207639;
double r1207641 = r1207640 - r1207632;
double r1207642 = r1207632 * r1207632;
double r1207643 = 1.0;
double r1207644 = r1207642 + r1207643;
double r1207645 = r1207641 / r1207644;
double r1207646 = r1207634 * r1207645;
double r1207647 = r1207645 - r1207635;
double r1207648 = r1207646 * r1207647;
double r1207649 = 4.0;
double r1207650 = r1207649 * r1207645;
double r1207651 = 6.0;
double r1207652 = r1207650 - r1207651;
double r1207653 = r1207642 * r1207652;
double r1207654 = r1207648 + r1207653;
double r1207655 = r1207654 * r1207644;
double r1207656 = r1207637 * r1207645;
double r1207657 = r1207655 + r1207656;
double r1207658 = r1207642 * r1207632;
double r1207659 = r1207657 + r1207658;
double r1207660 = r1207659 + r1207632;
double r1207661 = r1207637 - r1207639;
double r1207662 = r1207661 - r1207632;
double r1207663 = r1207662 / r1207644;
double r1207664 = r1207635 * r1207663;
double r1207665 = r1207660 + r1207664;
double r1207666 = r1207632 + r1207665;
return r1207666;
}
double f(double x1, double x2) {
double r1207667 = 3.0;
double r1207668 = x1;
double r1207669 = r1207667 * r1207668;
double r1207670 = r1207669 * r1207668;
double r1207671 = r1207670 - r1207668;
double r1207672 = x2;
double r1207673 = 2.0;
double r1207674 = r1207672 * r1207673;
double r1207675 = r1207671 - r1207674;
double r1207676 = 1.0;
double r1207677 = fma(r1207668, r1207668, r1207676);
double r1207678 = r1207675 / r1207677;
double r1207679 = r1207668 * r1207668;
double r1207680 = r1207674 - r1207668;
double r1207681 = fma(r1207667, r1207679, r1207680);
double r1207682 = r1207681 / r1207677;
double r1207683 = 4.0;
double r1207684 = -6.0;
double r1207685 = fma(r1207682, r1207683, r1207684);
double r1207686 = r1207682 - r1207667;
double r1207687 = cbrt(r1207686);
double r1207688 = r1207687 * r1207687;
double r1207689 = r1207673 * r1207668;
double r1207690 = r1207689 * r1207682;
double r1207691 = r1207690 * r1207687;
double r1207692 = r1207688 * r1207691;
double r1207693 = fma(r1207685, r1207679, r1207692);
double r1207694 = r1207677 * r1207693;
double r1207695 = fma(r1207682, r1207670, r1207694);
double r1207696 = fma(r1207677, r1207668, r1207695);
double r1207697 = r1207668 + r1207696;
double r1207698 = fma(r1207678, r1207667, r1207697);
return r1207698;
}



Bits error versus x1



Bits error versus x2
Initial program 0.5
Simplified0.3
rmApplied add-cube-cbrt0.4
Applied associate-*l*0.4
Final simplification0.4
herbie shell --seed 2019130 +o rules:numerics
(FPCore (x1 x2)
:name "Rosa's FloatVsDoubleBenchmark"
(+ 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))))))