Contents

  1. automa.c

automa.c

#include <stdio.h>
#include <math.h>

#define L 200
#define NUM_ITER 100

typedef unsigned long long RANDOM_TYPE;
typedef char SPIN;

#define MYRAND64  myrand64 = (6364136223846793005UL * myrand64)
#define MASSIMO_RAND64     0XFFFFFFFFFFFFFFFFUL
RANDOM_TYPE myrand64;
double inv_massimo_rand64 = 1.0L / (double)MASSIMO_RAND64;

SPIN C[L], CP[L];
int regola=90;

#define FAILURE -1
#define SUCCESS 1

/*****************************************************************************/
int main(void)
{
  long time, site;


    for(site=0; site<L; site++){
      C[site]=0;
      CP[site]=0;
    }
  C[L/2] = 1;
  printf("# la regola e' %d\n",regola);

  for(time=0; time<NUM_ITER; time++){
    for(site=0; site<L; site++){
      printf("X %ld T %ld CELLA %d\n",site,time,C[site]);
    }
    /* l'update e' sincrono */
    for(site=1; site<L-1; site++){
      if(regola==90){
	/* regola 90 che e' lo XOR dei vicini */
	CP[site] = C[site-1]^C[site+1];
      } else if(regola == 150){
	/* regola 150 che e' lo XOR dei vicini e lo XOR con se stesso*/
	CP[site] = (C[site-1]^C[site+1])^C[site];
      } else{
	printf("interruzione programma, regola non definita\n");
	exit(-9);
      }
    }
    /* rimetto CP in C */
    for(site=0; site<L; site++){
      C[site] = CP[site];
    }
  }
  for(site=0; site<L; site++){
    printf("X %ld T %ld CELLA %d\n",site,time,C[site]);
  }
  return SUCCESS;
}

Generated by GNU enscript 1.6.1.