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

  1. /*
  2.  * File: main_loop.m.c
  3.  *   By: Dave Hiebeler
  4.  *       July 1989
  5.  *
  6.  * Generate a transition-table for Moore 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     tl, l, bl, t, c, b, tr, r, br;
  23.     moore_nbors nbors;
  24.  
  25.  
  26.     L = (short) (log((double) NSTATES) / log((double) 2.0));
  27.     N = 9;
  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 (tl = 0; tl < NSTATES; tl++)
  37.      for (l = 0; l < NSTATES; l++)
  38.       for (bl = 0; bl < NSTATES; bl++)
  39.        for (t = 0; t < NSTATES; t++)
  40.     for (c = 0; c < NSTATES; c++)
  41.      for (b = 0; b < NSTATES; b++)
  42.       for (tr = 0; tr < NSTATES; tr++)
  43.        for (r = 0; r < NSTATES; r++)
  44.         for (br = 0; br < NSTATES; br++) {
  45.  
  46.         index = 0;
  47.         add_index(tl);
  48.         add_index(l);
  49.         add_index(bl);
  50.         add_index(t);
  51.         add_index(c);
  52.         add_index(b);
  53.         add_index(tr);
  54.         add_index(r);
  55.         add_index(br);
  56.  
  57.         nbors.tl = tl;
  58.         nbors.l = l;
  59.         nbors.bl = bl;
  60.         nbors.t = t;
  61.         nbors.c = c;
  62.         nbors.b = b;
  63.         nbors.tr = tr;
  64.         nbors.r = r;
  65.         nbors.br = br;
  66.         ta[index] = (update_function(&nbors) & AMASK);
  67.  
  68.         }
  69.  
  70.  
  71.     fp = fopen(OUTPUT, "w");
  72.     fwrite(ta, sizeof(*ta), TSIZE, fp);
  73.     fclose(fp);
  74.  
  75. }
  76.