+/** @file primpart_content.cpp
+ *
+ * Function to find primitive part of a multivariate polynomial. */
+
+/*
+ * GiNaC Copyright (C) 1999-2019 Johannes Gutenberg University Mainz, Germany
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
#include "ex.h"
#include "numeric.h"
#include "collect_vargs.h"
#include "euclid_gcd_wrap.h"
#include "divide_in_z_p.h"
-#include "debug.hpp"
+#include "debug.h"
-namespace GiNaC
-{
+namespace GiNaC {
/**
* Compute the primitive part and the content of a modular multivariate
// p_1(x_n) p_2(x_0, \ldots, x_{n-1})
c = ec.rbegin()->second;
ec.rbegin()->second = ex1;
- pp = ex_collect_to_ex(ec, vars).expand().smod(numeric(p));
+ pp = ex_collect_to_ex(ec, rest_vars).expand().smod(numeric(p));
return;
}
// Start from the leading coefficient (which is stored as a last
// element of the terms array)
- ex_collect_t::reverse_iterator i = ec.rbegin();
+ auto i = ec.rbegin();
ex g = i->second;
// there are at least two terms, so it's safe to...
++i;
}
} // namespace GiNaC
-