Macaulay2 Engine
Loading...
Searching...
No Matches

◆ spair_set_prepare_next_degree()

int gbA::spair_set_prepare_next_degree ( int & nextdegree)
private

Definition at line 1161 of file gb-default.cpp.

1164{
1165 S->spair_list = nullptr;
1166 S->spair_deferred_list.next = nullptr;
1167 S->spair_last_deferred = &S->spair_deferred_list;
1168
1169 S->gen_list = nullptr;
1170 S->gen_deferred_list.next = nullptr;
1171 S->gen_last_deferred = &S->gen_deferred_list;
1172
1173 int len = spair_set_determine_next_degree(nextdegree);
1174 if (len == 0) return 0;
1175
1176 spair head;
1177 spair *p;
1178 head.next = S->heap;
1179 p = &head;
1180 while (p->next != nullptr)
1181 if (p->next->deg != nextdegree)
1182 p = p->next;
1183 else
1184 {
1185 spair *tmp = p->next;
1186 p->next = tmp->next;
1187 if (tmp->type == SPAIR::SPAIR_GEN)
1188 {
1189 tmp->next = S->gen_list;
1190 S->gen_list = tmp;
1191 }
1192 else
1193 {
1194 // All other types are on the spair list
1195 tmp->next = S->spair_list;
1196 S->spair_list = tmp;
1197 }
1198 }
1199 S->heap = head.next;
1200 S->n_in_degree = len;
1201
1202 /* Now sort 'spair_list' and 'gen_list'. */
1203 spairs_sort(len, S->spair_list);
1204 spairs_sort(len, S->gen_list);
1205 // G->spairs_reverse(S->spair_list);
1206 // G->spairs_reverse(S->gen_list);
1207 return len;
1208}
void spairs_sort(int len, spair *&list)
SPairSet * S
@ SPAIR_GEN
int spair_set_determine_next_degree(int &nextdegree)
int p
SPairType type
Definition f4-types.hpp:126

References gbA::spair::next, p, S, SPAIR_GEN, spair_set_determine_next_degree(), spairs_sort(), and gbA::spair::type.

Referenced by do_computation().