/* Test File. Contains tests and main. */ #include #include "global.h" /* Prototypes */ void positiontest(void); void iotest(void); void ftest(void); void setseed(void); /* Not used. */ void randpoly(polynomial f); void prodtest(void); void randgpelt(group_elt g); void randpolytest(void); void randgpelttest(void); void polymulttest(void); void polypowertest(void); void gprodtest(void); void groupinvtest(void); void normalformtest(void); /* Import from interpret.c */ void interpret (void); /* Imports from polynomial.c */ void initialise(void); int readexp(exponent exp); int readpoly(polynomial f); void writepoly(polynomial f); int readfield(void); void polyprod(polynomial f, polynomial g, polynomial h); void polypower(polynomial f, int n, polynomial g); /* Imports from group_elt.c */ void gprod(group_elt f, group_elt g, group_elt h); void writegpelt(group_elt g); int groupequal(group_elt f, group_elt g); void groupinv(group_elt f, group_elt g); void gmult(group_elt f, group_elt g); int groupnotid(group_elt g); /* Import from presentation.c */ void normalform(group_elt g, vector v); extern int rank, total, prime; void positiontest(void) { exponent exp; initialise(); readexp(exp); printf("position is %d\n", position(exp)); if (rank) positiontest(); } void iotest(void) { extern int mdegree; polynomial f; printf("Set degree = -1 to terminate\n"); initialise(); if (mdegree == -1) return; readpoly(f); writepoly(f); printf("\n"); iotest(); } void ftest(void) { int n; initialise(); printf("Enter a field element\n"); n = readfield(); printf("%d\n",n); } void setseed(void) /* This does not seem to work. */ { int s; s = (unsigned int) clock(); srand(s); } void randpoly(polynomial f) { int i; for(i = 0; i < total; i++) f[i] = rand() % prime; } void prodtest(void) { polynomial f,g,h; initialise(); /* setseed(); */ randpoly(f); writepoly(f); printf("\n"); randpoly(g); writepoly(g); printf("\n"); polyprod(f,g,h); writepoly(h); printf("\n"); } void randgpelt(group_elt g) { int i, j; polynomial f; printf("rank is %d.\n", rank); printf("total is %d.\n", total); for(i = 0; i < rank; i++) { randpoly(f); printf("i is %d.\n", i); writepoly(f); printf("\n"); for(j = 0; j < rank + 1; j++) g[i][j] = 0; g[i][rank - i] = 1; for(j = rank + 1; j < total; j++) g[i][j] = f[j]; writepoly(g[i]); printf("\n"); } } void randpolytest(void) { polynomial f; initialise(); /* setseed(); */ randpoly(f); writepoly(f); printf("\n"); } void randgpelttest(void) { group_elt g; int i; initialise(); /* setseed(); */ randgpelt(g); writegpelt(g); for(i=0; i