/* add pseudo-generators to redundant defining generators; alsorecomputerequiredinversesofdefininggenerators;
thisroutinemustbecalledbeforeacalltocollectdefining relations;ifthereareredundantdefininggenerators,callsto eliminateshouldonlybedoneaftercallingupdate_generator becausethespacereservedforthepseudo-generator(s)added
by update_generator in structure is not set up yet */
void update_generators(struct pcp_vars *pcp)
{ register int *y = y_address;
register int f; register int i; register int cp; register int start; register int ycol; register int length; register int extra; register int value;
register int prime = pcp->p; register int dgen = pcp->dgen; register int ndgen = pcp->ndgen; register int lused; register int lastg;
#include"access.h"
/* first, add pseudo-generators to redundant defining generators */
for (f = 1; f <= ndgen; f++) {
value = y[dgen + f];
if (value == 0) { /* defining generator f was trivial; insert pseudo-generator */
if (is_space_exhausted(3, pcp)) return;
pcp->lused += 3;
lused = pcp->lused;
/* set up block header block and pointer to it */
y[lused - 2] = dgen + f;
y[lused - 1] = 1;
y[dgen + f] = -(lused - 2);
} else if (value < 0) { /* old entry was non-trivial so we deallocate it
and insert pseudo-generator */
extend_tail(dgen + f, 0, f, pcp);
if (pcp->overflow) return;
}
}
/* update submlg to account for any new pseudo-generators introduced */
pcp->submlg = pcp->subgrp - pcp->lastg;
/* now, recompute required inverses -- weknowtheinverseofftotheendofclasspcp->cc-1; denotethisbyf';evaluatef*f'andtaketheinverseof
this result to give the class pcp->cc part of f^-1 */
for (f = 1; f <= ndgen; f++) {
if (y[dgen - f] > 0) continue;
if (is_space_exhausted(2 * pcp->lastg + 2, pcp)) return;
/* f^(-1) was nontrivial, so make room for lower class entries */
start = -y[dgen - f];
extra = y[start + 1];
ycol = lused + length + 3;
for (i = 1; i <= length; i++)
y[ycol + extra - i] = y[ycol - i];
/* copy header block and lower class entries */
for (i = 1; i <= extra; i++)
y[lused + i + 2] = y[start + i + 1];
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.