forked from Github_Repos/cvw
74 lines
1.2 KiB
C
74 lines
1.2 KiB
C
|
/* 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;
|
||
|
}
|
||
|
|