Rev 139 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
double precision function flsm(s,center,hwidth,x,m,mp,maxord,* g,sumcls)cc*** function to compute fully symmetric basic rule sumcinteger s, m(s), mp(s), maxord, sumcls, ixchng, lxchng, i, l,* ihalf, mpi, mpldouble precision g(maxord), x(s), intwgt, zero, one,two, intsum,* center(s), hwidth(s)double precision adphlpzero = 0one = 1two = 2intwgt = onedo 10 i=1,smp(i) = m(i)if (m(i).ne.0) intwgt = intwgt/twointwgt = intwgt*hwidth(i)10 continuesumcls = 0flsm = zerocc******* compute centrally symmetric sum for permutation mp20 intsum = zerodo 30 i=1,smpi = mp(i) + 1x(i) = center(i) + g(mpi)*hwidth(i)30 continue40 sumcls = sumcls + 1cmmmintsum = intsum + adphlp(s,x)do 50 i=1,smpi = mp(i) + 1if(g(mpi).ne.zero) hwidth(i) = -hwidth(i)x(i) = center(i) + g(mpi)*hwidth(i)if (x(i).lt.center(i)) go to 4050 continuec******* end integration loop for mpcflsm = flsm + intwgt*intsumif (s.eq.1) returncc******* find next distinct permutation of m and loop backc to compute next centrally symmetric sumdo 80 i=2,sif (mp(i-1).le.mp(i)) go to 80mpi = mp(i)ixchng = i - 1if (i.eq.2) go to 70ihalf = ixchng/2do 60 l=1,ihalfmpl = mp(l)imnusl = i - lmp(l) = mp(imnusl)mp(imnusl) = mplif (mpl.le.mpi) ixchng = ixchng - 1if (mp(l).gt.mpi) lxchng = l60 continueif (mp(ixchng).le.mpi) ixchng = lxchng70 mp(i) = mp(ixchng)mp(ixchng) = mpigo to 2080 continuec***** end loop for permutations of m and associated sumscreturnend