home *** CD-ROM | disk | FTP | other *** search
/ Photo CD Demo 1 / Demo.bin / cellsim / v2_5 / rule_mdr / main_lpv.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-02-26  |  1.2 KB  |  64 lines

  1. /*
  2.  * File: main_loop.v.c
  3.  *   By: Dave Hiebeler
  4.  *       July 1989
  5.  *
  6.  * Generate a transition-table for von-Neumann neighborhood
  7.  */
  8.  
  9. #include <stdio.h>
  10. #include <math.h>
  11. #include "nborhood.h"
  12.  
  13. #define add_index(k)    index <<= L;  index |= k
  14.  
  15. func_ptr update_function;
  16.  
  17. main()
  18. {
  19.     char    *ta;            /* t-table array       */
  20.     FILE   *fopen(), *fp;
  21.     int L, N, TSIZE, index, AMASK;
  22.     int     l, c, r, t, b;
  23.     vonn_nbors nbors;
  24.  
  25.  
  26.     L = (short) (log((double) NSTATES) / log((double) 2.0));
  27.     N = 5;
  28.     TSIZE = 1 << (L*N);
  29.     AMASK = NSTATES-1;
  30.     if ((ta=(char *)malloc(TSIZE))==NULL) {
  31.     fprintf(stderr,"Couldn't malloc memory for table\n");
  32.     exit(1);
  33.     }
  34.     printf("NSTATES = %d\n",NSTATES);
  35.     init_function();
  36.     for (l = 0; l < NSTATES; l++)
  37.       for (c = 0; c < NSTATES; c++)
  38.     for (r = 0; r < NSTATES; r++)
  39.      for (t = 0; t < NSTATES; t++)
  40.        for (b = 0; b < NSTATES; b++) {
  41.  
  42.            index = 0;
  43.            add_index(l);
  44.            add_index(c);
  45.            add_index(r);
  46.            add_index(t);
  47.            add_index(b);
  48.  
  49.         nbors.l = l;
  50.         nbors.c = c;
  51.         nbors.r = r;
  52.         nbors.t = t;
  53.         nbors.b = b;
  54.         ta[index] = (update_function(&nbors) & AMASK);
  55.  
  56.         }
  57.  
  58.  
  59.     fp = fopen(OUTPUT, "w");
  60.     fwrite(ta, sizeof(*ta), TSIZE, fp);
  61.     fclose(fp);
  62.  
  63. }
  64.