1226{
1227
1228
1230
1232 if (P == nullptr) return nullptr;
1235
1237
1239 int nrows = r->n_cols();
1240 int ncols = c->n_cols();
1245 for (int i = 0; i < ncols; i++)
1246 {
1247 if (c->elem(i) == nullptr) continue;
1250 for (int j = 0; j < nrows; j++)
1251 {
1252 if (r->elem(j) == nullptr) continue;
1255 int sign =
signdivide(nvars, aexp, bexp, result_exp);
1256 if (sign != 0)
1257 {
1262 mat.set_entry(j, i, f);
1263 }
1264 }
1265 }
1269 return mat.to_matrix();
1270}
exponents::Exponents exponents_t
const Ring * get_ring() const
friend class MatrixConstructor
void to_expvector(const_monomial m, exponents_t result_exp) const
monomial make_one() const
void from_expvector(const_exponents exp, monomial result) const
virtual const Monoid * getMonoid() const
virtual ring_elem make_flat_term(const ring_elem a, const_monomial m) const =0
virtual const Ring * getCoefficients() const
virtual const_monomial lead_flat_monomial(const ring_elem f) const =0
ring_elem minus_one() const
virtual const PolynomialRing * cast_to_PolynomialRing() const
const int * const_monomial
static int signdivide(int n, const_exponents a, const_exponents b, exponents_t exp)
#define newarray_atomic(T, len)