172{
174 int i, j, nv, this_block;
175 deg_t *wts =
nullptr;
176
177
178 int nblocks = 0;
179 int nvars = 0;
180 int hascomponent = 0;
181 for (i = 0; i < mo->
len; i++)
182 {
184 nblocks++;
186 hascomponent++;
188 {
189
190 }
192 }
193 nblocks -= hascomponent;
194
195
199 result->nblocks = nblocks;
203 if (hascomponent == 0)
result->nblocks_before_component = nblocks;
204
205 this_block = 0;
207 for (i = 0; i < mo->
len; i++)
208 {
211 {
212 if (t->
wts ==
nullptr)
214 else
216 }
217 else
218 {
221 }
223 {
226 break;
229 break;
232 break;
235 break;
238 break;
241 break;
244 break;
247 break;
250 break;
253 break;
255
256
258 result->blocks + this_block++,
261 break;
264 break;
267 break;
269
270 break;
272 if (--hascomponent == 0)
273 {
274
276 result->nblocks_before_component = this_block;
277 }
278
279 break;
281 if (--hascomponent == 0)
282 {
283
285 result->nblocks_before_component = this_block;
286 }
287
288 break;
289 }
290 }
291
292
293
294
295 nv = 0;
297 result->nslots_before_component = 0;
298 for (i = 0; i < nblocks; i++)
299 {
301
302 result->blocks[i].first_exp = nv;
304 nv +=
result->blocks[i].nvars;
306
308 {
309 result->blocks[i].first_exp = 0;
310
311
312 for (j = 0; j <
result->blocks[i].nvars; j++)
314 ;
315 }
318 {
319 result->blocks[i].weights =
321 }
322
323 if (i ==
result->nblocks_before_component - 1)
324 {
326 }
327 }
328
329
331 for (i = 0; i <
result->nvars; i++)
result->is_laurent[i] = 0;
332
333 for (i = 0; i <
result->nblocks; i++)
336 {
337 for (j = 0; j <
result->blocks[i].nvars; j++)
338 result->is_laurent[
result->blocks[i].first_exp + j] = 1;
339 }
340
342}
static void mo_block_grevlex4(struct mo_block *b, int nvars)
static void mo_block_grevlex2_wts(struct mo_block *b, int nvars)
static void mo_block_group_lex(struct mo_block *b, int nvars)
static void mo_block_group_revlex(struct mo_block *b, int nvars)
static void mo_block_grevlex4_wts(struct mo_block *b, int nvars)
static void mo_block_grevlex2(struct mo_block *b, int nvars)
static void mo_block_grevlex_wts(struct mo_block *b, int nvars)
static void mo_block_grevlex(struct mo_block *b, int nvars)
static void mo_block_revlex(struct mo_block *b, int nvars)
static void mo_block_lex4(struct mo_block *b, int nvars)
static void mo_block_wt_function(struct mo_block *b, int nvars, deg_t *wts)
static void mo_block_lex2(struct mo_block *b, int nvars)
static void mo_block_lex(struct mo_block *b, int nvars)
char * getmem_atomic(size_t n)
VALGRIND_MAKE_MEM_DEFINED & result(result)
#define getmemstructtype(S)
static int32_t div_by(int32_t &x, int32_t y, const char *msg)
enum MonomialOrdering_type type