/* ** Copyright (C) 1995,2003-2004 Peter Schachte and The University of Melbourne. ** This file may only be copied under the terms of the GNU Library General ** Public License - see the file COPYING.LIB in the Mercury distribution. */ /***************************************************************** File : test.c Author : Peter Schachte Origin : Tue Jun 20 15:51:07 1995 Purpose: Timing test for bryant graph MR_ROBDD_iff_conj_array code *****************************************************************/ #include #include #include "bryant.h" #include "timing.h" #define VARLIMIT 1024 int opcount; void usage(char *progname) { printf("usage: %s size maxvar [repetitions]\n", progname); printf(" creates all possible v <-> v1 & v2 & ... & vsize functions where v and\n"); printf(" v and the vi are between 0 and maxvar inclusive. If repetitions is >0,\n"); printf(" this will be done that many times.\n"); } void init_array(int top, int v0, int array[]) { int i, val; for (i=0, val=0; i ", v0); for (i=0; i "); printOut(f); printf("\n"); #endif /* DEBUGALL */ #endif /* !OVERHEAD */ ++opcount; } void dont_doit(int v0, int top, int array[]) { } int main(int argc, char **argv) { int varmax, size, repetitions; int array[VARLIMIT]; int reps, v0; millisec clock0, clock1, clock2, clock3; float runtime, overhead, rate; int test_nodes, overhead_nodes; if (argc < 3) { usage(argv[0]); return 20; } if ((varmax=atoi(argv[2]))<1 || varmax>=VARLIMIT) { usage(argv[0]); printf("\n varmax must be between 1 <= varmax < %d\n", VARLIMIT); return 20; } if ((size=atoi(argv[1]))<0 || size>=varmax) { usage(argv[0]); printf("\n size must be between 0 <= size < varmax\n"); return 20; } repetitions=(argc>3 ? atoi(argv[3]) : 1); if (repetitions <= 0) repetitions = 1; opcount = 0; clock0 = milli_time(); for (reps=repetitions; reps>0; --reps) { for (v0=0; v00; --reps) { for (v0=0; v0