1c 2c $Id$ 3c 4 5 SUBROUTINE tool_randm(iseed,x) 6 7 implicit none 8 9 integer i,iseed,itoz,itozz,mz,mult 10 11 real*8 x,add,dimax,ddimax 12c real*8 rand 13 14 logical newjob 15 16 dimension mz(250) 17 18 save newjob,itoz,dimax,ddimax 19 20 data newjob/.true./ 21 22* **** external functions **** 23 real*8 util_random 24 external util_random 25 26 if(newjob)then 27 if(mod(iseed,2).eq.0)iseed=iseed+1 28 mult=65539 29 add=2147483648.0d00 30 dimax=1.0d00/add 31 ddimax=0.50d00*dimax 32 do i=1,250 33 x=util_random(iseed) 34 mz(i)=x*iseed 35 enddo 36 itoz=1 37 newjob=.false. 38 else 39 itoz=itoz+1 40 if(itoz.gt.250)itoz=itoz-250 41 itozz=itoz+103 42 if(itozz.gt.250)itozz=itozz-250 43 mz(itoz)=ieor(mz(itoz),mz(itozz)) 44 x=mz(itoz)*dimax+ddimax 45 x=2.0d00*x 46 endif 47 48 return 49 50 END 51