/* testgen.c */ /* Written 7/21/2022 by Cedar Turek This program creates test vectors for modulo calculation from integer divide. */ /* #includes */ #include <stdio.h> #include <stdlib.h> #include <math.h> /* Constants */ #define ENTRIES 10 #define RANDOM_VECS 500 /* Prototypes */ void output(FILE *fptr, long a, long b, long rem); void printhex(FILE *fptr, long x); double random_input(void); /* Main */ void main(void) { FILE *fptr; long a, b, rem; long list[ENTRIES] = {1, 3, 5, 18, 25, 33, 42, 65, 103, 255}; int i, j; if ((fptr = fopen("modtestvectors","w")) == NULL) { fprintf(stderr, "Couldn't write testvectors file\n"); exit(1); } for (i=0; i<ENTRIES; i++) { b = list[i]; for (j=0; j<ENTRIES; j++) { a = list[j]; rem = a%b; output(fptr, a, b, rem); } } fclose(fptr); } /* Functions */ void output(FILE *fptr, long a, long b, long rem) { printhex(fptr, a); fprintf(fptr, "_"); printhex(fptr, b); fprintf(fptr, "_"); printhex(fptr, rem); fprintf(fptr, "\n"); } void printhex(FILE *fptr, long m) { fprintf(fptr, "%016llx", m); } double random_input(void) { return 1.0 + rand()/32767.0; }