322{
323 Nmi_node **
p = &top, *up =
nullptr;
324 int one_element = 1;
325
327 {
328 one_element = 0;
329 int insert_var = i.var();
330 int insert_exp;
331
333 {
334
336 (*p)->header = (*p)->left = (*p)->right = *
p;
337 }
338 else if ((*p)->var < insert_var)
339 {
340
341 Nmi_node *header_node, *zero_node;
344
345 header_node->
left = header_node->
right = zero_node;
346 (*p)->
down() = zero_node;
348 zero_node->
right = header_node;
349 }
350
351 if ((*p)->var > insert_var)
352 {
353 insert_var = (*p)->var;
354 insert_exp = 0;
355 }
356 else
357 {
358 insert_exp = i.exponent();
359 ++i;
360 }
361
362 Nmi_node *q = (*p)->right;
364 if (q->
exp != insert_exp)
365 {
366 Nmi_node *insert_node;
367
368 if (i.valid())
369 {
371 insert_var, insert_exp, static_cast<Nmi_node*>(nullptr));
373 q = insert_node;
374 }
375 else
376 {
379 return;
380 }
381 }
382
383 up = q;
385 }
386 if (one_element)
387 {
388
391 top->left = top->right = leaf_node;
393 top;
394 }
395}
ExponentListIterator< int, true > index_varpower
Nmi_node * new_leaf_mi_node(int v, int e, Bag *b)
Nmi_node * new_internal_mi_node(int v, int e, Nmi_node *d)
void insert_to_left(Nmi_node *q)
gc_vector< int > & monom()