/****************************************************************************
**
*A delete_tables.c ANUPQ source Eamonn O'Brien
**
*Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany
*Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia
**
*/
#include "pq_defs.h"
#include "pcp_vars.h"
/* subroutine to delete all word and subgroup tables
entries, depending upon the value of type;
if type = 1 delete only the word table entries;
if type = 2, delete only the subgroup table entries;
if type = 0, delete both */
void delete_tables(int type, struct pcp_vars *pcp)
{
register int *y = y_address;
register int i;
register int j;
register int n;
register int p1;
register int nsubgp = pcp->nsubgp;
register int address;
/* delete all entries (pointers) in the words table */
if (type != 2) {
if ((n = pcp->nwords) != 0) {
address = pcp->words;
for (i = 1; i <= n; i++)
if ((p1 = -y[address + i]) != 0)
y[p1] = 0;
/* shift up the subgroup table, if it exists */
if (type && pcp->nsubgp) {
j = pcp->structure + 1;
for (i = 1; i <= nsubgp; i++, j--) {
p1 = y[j - n];
y[j] = p1;
if (p1 != 0)
y[-p1] = j;
}
pcp->subgrp = j - 1;
pcp->submlg = pcp->subgrp - pcp->lastg;
}
pcp->words = pcp->structure;
pcp->nwords = 0;
}
}
/* delete all entries (pointers) in the subgroup table */
if (type != 1) {
address = pcp->subgrp;
for (i = 1; i <= nsubgp; i++) {
if ((p1 = -y[address + i]) != 0) {
y[address + i] = 0;
y[p1] = 0;
}
}
pcp->nsubgp = 0;
pcp->subgrp = pcp->words;
pcp->submlg = pcp->subgrp - pcp->lastg;
}
}
¤ Dauer der Verarbeitung: 0.0 Sekunden
(vorverarbeitet am 2026-11-04)
¤
*© Formatika GbR, Deutschland