236 PORD_INT *stage, *reachset, *auxbin, *auxtmp, *auxaux;
239
240 Gelim = minprior->
Gelim;
241 bucket = minprior->
bucket;
243 stageinfo = minprior->
stageinfo + istage;
245 auxaux = minprior->
auxaux;
246 auxbin = minprior->
auxbin;
247 auxtmp = minprior->
auxtmp;
248 pflag = &(minprior->
flag);
249
250 nvtx = Gelim->
G->
nvtx;
253
254#ifdef DEBUG
255 printf("\nSTARTING NEW ELIMINATION STAGE (nedges %d, maxedges %d)\n\n",
258
259#endif
260
261
262
263
264 nreach = 0;
265 for (u = 0; u < nvtx; u++)
266 if ((score[u] == -1) && (stage[u] <= istage))
267 { reachset[nreach++] = u;
268 score[u] = degree[u];
269
270 }
271
272
273
274
277 updateScore(Gelim, reachset, nreach, scoretype, auxbin);
279 for (i = 0; i < nreach; i++)
280 { u = reachset[i];
282 }
283
284
285
286
289 break;
290 nreach = minprior->
nreach;
291
292#ifdef BE_CAUTIOUS
293 printf("checking arrays auxtmp and auxbin\n");
294 for (u = 0; u < nvtx; u++)
295 if ((auxtmp[u] >= *pflag) || (auxbin[u] != -1))
296 { printf("ERROR: flag = %d, auxtmp[%d] = %d, auxbin[%d] = %d\n",
297 *pflag, u, auxtmp[u], u, auxbin[u]);
299 }
300#endif
301
302
303
304
308
309
310
311
313 findIndNodes(Gelim, reachset, nreach, auxbin, auxaux, auxtmp, pflag);
315
316#ifdef BE_CAUTIOUS
317 printf("checking arrays auxtmp and auxbin\n");
318 for (u = 0; u < nvtx; u++)
319 if ((auxtmp[u] >= *pflag) || (auxbin[u] != -1))
320 { printf("ERROR: flag = %d, auxtmp[%d] = %d, auxbin[%d] = %d\n",
321 *pflag, u, auxtmp[u], u, auxbin[u]);
323 }
324#endif
325
326
327
328
330 for (i = 0; i < nreach; i++)
331 { u = reachset[i];
332 if (score[u] >= 0)
334 }
336
337
338
339
342 updateScore(Gelim, reachset, nreach, scoretype, auxbin);
344
345
346
347
348 for (i = 0; i < nreach; i++)
349 { u = reachset[i];
351 }
352
354 }
355}
#define pord_starttimer(var)
#define pord_stoptimer(var)
PORD_INT eliminateStep(minprior_t *minprior, PORD_INT istage, PORD_INT scoretype)
integer, dimension(:), allocatable, save score
void findIndNodes(gelim_t *, PORD_INT *, PORD_INT, PORD_INT *, PORD_INT *, PORD_INT *, PORD_INT *)
void insertBucket(bucket_t *, PORD_INT, PORD_INT)
void printElimGraph(gelim_t *)
void updateDegree(gelim_t *, PORD_INT *, PORD_INT, PORD_INT *)
void updateAdjncy(gelim_t *, PORD_INT *, PORD_INT, PORD_INT *, PORD_INT *)
void updateScore(gelim_t *, PORD_INT *, PORD_INT, PORD_INT, PORD_INT *)
struct _stageinfo stageinfo_t