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

  1. /*
  2.  * File: main_loop.lr2.c
  3.  *   By: Dave Hiebeler
  4.  *       July 1989
  5.  *
  6.  * Generate a transition-table for linear (r=2) 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     ll, l, c, r, rr;
  23.     lr2_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 (ll = 0; ll < NSTATES; ll++)
  37.       for (l = 0; l < NSTATES; l++)
  38.     for (c = 0; c < NSTATES; c++)
  39.       for (r = 0; r < NSTATES; r++)
  40.         for (rr = 0; rr < NSTATES; rr++) {
  41.  
  42.         index = 0;
  43.         add_index(ll);
  44.         add_index(l);
  45.         add_index(c);
  46.         add_index(r);
  47.         add_index(rr);
  48.  
  49.         nbors.ll = ll;
  50.         nbors.l = l;
  51.         nbors.c = c;
  52.         nbors.r = r;
  53.         nbors.rr = rr;
  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.