84{
85
86
87
89 positions.reserve(polys0.size());
90
91 for (int i = 0; i < polys0.size(); i++) positions.push_back(i);
92
93
94
95
96 std::stable_sort(positions.begin(),
97 positions.end(),
98 ReducedGB_Field_Local_sorter(
R,
F, polys0));
99
100
101
102
103
104
105
106
107
108
109 for (
VECTOR(
int)::iterator i = positions.begin(); i != positions.end(); i++)
110 {
112 gbvector *f = polys0[*i].f;
114 R->gbvector_get_lead_exponents(
F, f, e);
115 if ((!
Rideal || !
Rideal->search_expvector(e, not_used)) &&
116 T->find_divisors(1, e, f->
comp) == 0)
117 {
118
119
121 ring_elem junk;
122
123 h.
f =
R->gbvector_copy(f);
124 h.
fsyz =
R->gbvector_copy(polys0[*i].fsyz);
125
126 if (false and auto_reduced)
128
129 R->gbvector_remove_content(h.
f, h.
fsyz);
130
132 polys.push_back(h);
133 }
134 else
135 R->exponents_delete(e);
136 }
137
138 for (int i = 0; i < polys.size(); i++)
139 {
140 int f_lead_wt;
141 gbvector *f = polys[i].f;
142 int d =
wt->gbvector_weight(f, f_lead_wt);
143 int a = d - f_lead_wt;
144
147 t.size =
R->gbvector_n_terms(f);
148 t.alpha = a;
149 gb_elems.push_back(t);
150 }
151}
exponents::Exponents exponents_t
virtual void remainder(POLY &f, bool use_denom, ring_elem &denom)
const MonomialIdeal * Rideal
Per-element bookkeeping record used by ReducedGB_Field_Local during local-ring GB minimisation.