#include "HybridMonteCarlo.h" // gaussian random numbers -- should really be in utilities.cpp double GaussianRandom(){ static int iset=0; static double gset; double fac,rsq,v1,v2; if(iset==0){ do{ v1=2.0*rand()/(double)RAND_MAX-1.0; v2=2.0*rand()/(double)RAND_MAX-1.0; rsq=v1*v1+v2*v2;} while(rsq>=1.0 || rsq == 0.0); fac=sqrt(-2.0*log(rsq)/rsq); gset=v1*fac; iset=1; return(v2*fac);} else { iset=0; return(gset);}} void HybridMonteCarlo(ScalarField &phi){ ScalarField oldphi,p,newforce,oldforce; static int first_time=1; int site,mu,LENGTH; LatticeVector x,e_mu; double Snew,Hold,Hnew,EPS; static double S; static ScalarField force; static int no_calls=0,count=0; //set parameters for classical evolution EPS=0.1; LENGTH=(int)(1/EPS); no_calls++; if(first_time){ S=0.0; site=0; while(SumOverLattice(x,site)){ for(mu=0;mu