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