/****************************************************************************
**
*A generator_definition.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"
#include "pq_functions.h"
/* find the structure of a pcp generator, gen, recursively from struct,
storing the result in y[pcp->lused + k] to y[pcp->lused + pcp->cc];
room is needed to store a string of length pcp->cc */
void generator_definition(int gen, int *k, struct pcp_vars *pcp)
{
register int *y = y_address;
register int i, j;
#include "access.h"
if (is_space_exhausted(pcp->cc, pcp))
return;
*k = pcp->cc + 1;
do {
i = PART2(y[pcp->structure + gen]);
j = PART3(y[pcp->structure + gen]);
if (j != 0) {
--(*k);
y[pcp->lused + *k] = j;
gen = i;
} else {
/* we have a power entry -- work out its structure recursively;
the structure (d^p)^j, where d is a defining generator, has
weight j + 1 and thus its structure is j + 1 copies of d */
j = 2;
while (i > pcp->ndgen) {
i = PART2(y[pcp->structure + i]);
++j;
}
for (; j > 0; --j, --(*k))
y[pcp->lused + *k] = i;
}
} while (i != 0);
}
¤ Dauer der Verarbeitung: 0.1 Sekunden
(vorverarbeitet am 2026-11-04)
¤
*© Formatika GbR, Deutschland