#include #define MSG(str) printf(str); #define Ut(t) (((int)(_(U,0,t)))-1) /*#define ui(t) (((int)(_(u,0,t)))-1) #define vj(t) (((int)(_(v,0,t)))-1)*/ #define ui(t) (u[t]) #define vj(t) (v[t]) #define UVARR(uv) mxGetCell(RAWVOC,uv) #define UVLEN(uv) mxGetN(UVARR(uv)) #define E10 (e1==NULLCHAR) #define E20 (e2==NULLCHAR) #define E1u (e1==ui(i-1)) #define E2v (e2==vj(j-1)) #define PMPuv PMP(ui(i-1),vj(j-1)) #define PMPu0 PMP(ui(i-1),NULLCHAR) #define PMP0v PMP(NULLCHAR,vj(j-1)) #define PMP00 PMP(NULLCHAR,NULLCHAR) #define RHO0 RHO(NULLCHAR) #define RHOu RHO(ui(i-1)) #define RAND gsl_rng_uniform(RNG) #define NVOC mxGetM(RAWVOC) #define NALF d1(pmp) #define WEQ(j,t) ( ABS(_(Uniq,0,j)-_(U,0,t)) < EPS) /* P(rimitive) M(orphological) P(robability) */ /*#define PMP(a,b) pmpfunc((a),(b),(ell),(pmp))*/ /*#define RHO(a) rhofunc(a,ell,rho)*/ /*#define PMP(a,b) pmpfunc(alfinds[a-1],alfinds[b-1],(ell),(pmp)) #define RHO(a) rhofunc(alfinds[a-1],ell,rho)*/ #define PMP(a,b) _3(pmp,alfinds[a-1],alfinds[b-1],ell) #define RHO(a) _(rho,alfinds[a-1],ell) #define NULLCHAR ('@') #define JUNKELL 0 gsl_rng *init_rand(unsigned long int randseed) { const gsl_rng_type *T; gsl_rng *RNG; gsl_rng_env_setup(); T = gsl_rng_default; RNG = gsl_rng_alloc (T); gsl_rng_set(RNG,randseed); return RNG; } void randTENSOR2(TENSOR2 x,gsl_rng *RNG) { int i,j; FOR2(i,j,d1(x),d2(x)) _(x,i,j) = RAND; } void randTENSOR3(TENSOR3 x,gsl_rng *RNG) { int i,j,k; FOR3(i,j,k,d1(x),d2(x),d3(x)) _3(x,i,j,k) = RAND; } double pmpfunc(a,b,ell,pmp,rho) int ell; int a,b; TENSOR3 pmp; { return(_3(pmp,a,b,ell)); } void normpmp(TENSOR3 pmp) { int ell,i,j; double s; for(ell=0;ell0;t--) { for(i=0;i