(*This file computes the gradient of the functions 
  log E, log F, and log G *)


MOD[k_,n_]:=If[Mod[k,n]<1,Mod[k,n]+n,Mod[k,n]]
Loc[b1_,b2_,b3_,X_,k_]:=(n=Length[X];
             i1=MOD[k+0 ,n];
             i2=MOD[k+b1 ,n];
             i3=MOD[k+b2 ,n];
             i4=MOD[k+b3 ,n];  
             aa1=(1+X[[i1]])(1+X[[i2]])-X[[i3]] X[[i4]];
             Log[aa1])

TheMap[b1_,b2_,b3_,X_]:=Sum[Loc[b1,b2,b3,X,k],{k,1,Length[X]}]


(*E*)

EE[X_]:=TheMap[1,0,1,X]-TheMap[0,0,0,X]
Clear[a,b,c,d,e];
DbE=D[EE[{z,a,b,c,d}],b];


(*F*)

F[X_]:=TheMap[2,1,1,X]-TheMap[0,0,0,X]
Clear[a,b,c,d,e,f];
DcF=D[F[{a,b,c,d,e,f}],c];
Simplify[DcF]

(*G*)

Loc1[X_,j_]:=2+X[[j]];
Loc2[X_,j_]:=2+2 X[[j]] - X[[MOD[j+1,Length[X]]]];

G[X_]:=Log[Product[Loc1[X,j],{j,1,Length[X]}]]-
       Log[Product[Loc2[X,j],{j,1,Length[X]}]];

DbG=D[G[{a,b,c,d,e}],b]
Simplify[DbG]
