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

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