void mcqdyn(int* maxclique, int &sz){ set_degrees(V); sort(V.begin(),V.end(), desc_degree); init_colors(V); for(int i = 0; i < (int)V.size() + 1; i++) S[i].i1 = S[i].i2 = 0; expand_dyn(V); sz = (int)QMAX.size(); for(int i = 0; i < (int)QMAX.size(); i++) maxclique[i] = QMAX[i]; }
void degree_sort(Vertices &R){ set_degrees(R); sort(R.begin(), R.end(), desc_degree); }
Monoid::Monoid(const MonomialOrdering *mo, M2_ArrayString names, const PolynomialRing *deg_ring, M2_arrayint degs, M2_arrayint hefts) : nvars_(rawNumberOfVariables(mo)), varnames_(names), degvals_(degs), heftvals_(hefts), degree_ring_(deg_ring), degree_monoid_(deg_ring->getMonoid()), mo_(mo) { monorder_ = monomialOrderMake(mo); monomial_size_ = monorder_->nslots; n_before_component_ = monorder_->nslots_before_component; n_after_component_ = monomial_size_ - n_before_component_; component_up_ = monorder_->component_up; // Set nslots_ int total = 0; for (int i = 0; i < monorder_->nblocks; i++) { total += monorder_->blocks[i].nslots; nslots_.push_back(total); } // Set first_weight_value_ bool get_out = false; first_weights_slot_ = -1; for (int i = 0; i < monorder_->nblocks && !get_out; i++) { switch (monorder_->blocks[i].typ) { case MO_LEX: case MO_LEX2: case MO_LEX4: case MO_NC_LEX: get_out = true; break; case MO_REVLEX: case MO_LAURENT: case MO_LAURENT_REVLEX: case MO_GREVLEX: case MO_GREVLEX2: case MO_GREVLEX4: case MO_GREVLEX_WTS: case MO_GREVLEX2_WTS: case MO_GREVLEX4_WTS: case MO_WEIGHTS: first_weights_slot_ = 0; case MO_POSITION_UP: continue; case MO_POSITION_DOWN: continue; default: INTERNAL_ERROR("monomial order block type not handled"); } } exp_size = EXPONENT_BYTE_SIZE(nvars_); n_invertible_vars_ = rawNumberOfInvertibleVariables(mo_); set_degrees(); set_overflow_flags(); local_vars = rawNonTermOrderVariables(mo); // Debugging only: // fprintf(stderr, "%d variables < 1\n", local_vars->len); // if (local_vars->len > 0) // { // fprintf(stderr, "they are: "); // for (int i=0; i<local_vars->len; i++) // fprintf(stderr, "%d ", local_vars->array[i]); // fprintf(stderr, "\n"); // } }