46 INTEGER(mpi) :: iboost
49 INTEGER(mpi) :: irotor
60 INTEGER(mpi),
INTENT(IN) :: n
61 REAL(mps),
INTENT(OUT) :: a(*)
62 INTEGER(mpi),
PARAMETER :: nb=511
63 INTEGER(mpi),
PARAMETER :: ia=16807
64 INTEGER(mpi),
PARAMETER :: im=2147483647
65 INTEGER(mpi),
PARAMETER :: iq=127773
66 INTEGER(mpi),
PARAMETER :: ir=2836
67 REAL(mps),
PARAMETER :: aeps=1.0e-10
68 REAL(mps),
PARAMETER :: scalin=4.6566125e-10
69 common/ranbuf/mbuff(0:nb),ian,ic,iboost
71 INTEGER(mpi) :: istart
73 irotor(m,n)=ieor(ior(ishft(m,17),ishft(m,-15)),n)
74 DATA istart/0/,iwarm/10/,iseed/4711/
75 IF(istart /= 0)
GO TO 20
76 WRITE(*,*)
' Automatic GBRSHI initialization using:'
79 WRITE(*,*)
' ISEED=',iseed,
' IWARM=',iwarm
82 idum=ia*(idum-k*iq)-ir*k
83 IF(idum < 0) idum=idum+im
84 mbuff(j)=ishft(idum,1)
91 mbuff(ian)=irotor(it,ic)
93 ian=iand(it+iboost,nb)
101 mbuff(ian)=irotor(it,ic)
103 ian=iand(it+iboost,nb)
104 a(i)=real(ishft(it,-1),mps)*scalin+aeps
107 iboost=iand(iboost,nb)
110 entry gbrvin(jseed,jwarm)
112 WRITE(*,*)
' Gbrshi initialization by GBRVIN-call using:'