PROGRAM xmiser C driver for routine miser INTEGER idum,j,n,ndim,nt,ntries REAL ave,dith,sumav,sumsd,var,xoff COMMON /ranno/ idum COMMON /tofunc/ xoff,ndim REAL region(20) EXTERNAL func write(*,*) 'IDUM=' read(*,*) idum idum=-abs(idum) 1 write(*,*) 'ENTER N,NDIM,XOFF,DITH,NTRIES' read(*,*,END=999) n,ndim,xoff,dith,ntries sumav=0. sumsd=0. do 12 nt=1,ntries do 11 j=1,ndim region(j)=0. region(j+ndim)=1. 11 continue call miser(func,region,ndim,n,dith,ave,var) sumav=sumav+(ave-1.)**2 sumsd=sumsd+sqrt(abs(var)) 12 continue sumav=sqrt(sumav/ntries) sumsd=sumsd/ntries write(*,*) 'FRACTIONAL ERROR: ACTUAL,INDICATED=',sumav,sumsd goto 1 999 write(*,*) 'NORMAL COMPLETION' STOP END REAL FUNCTION func(pt) INTEGER j,ndim REAL sum,xoff COMMON /tofunc/ xoff,ndim REAL pt(*) sum=0. do 11 j=1,ndim sum=sum+100.*(pt(j)-xoff)**2 11 continue if (sum.lt.80.) then func=exp(-sum) else func=0. endif func=func*(5.64189**ndim) return END