34 integer(i8b),
parameter ::
hg = huge(1_i8b)
35 integer(i8b),
parameter ::
hgm = -
hg
39 integer(i8b),
save ::
seq = 0
47 integer(i8b),
pointer,
save ::
iran(:)
48 integer(i8b),
pointer,
save ::
jran(:)
49 integer(i8b),
pointer,
save ::
kran(:)
50 integer(i8b),
pointer,
save ::
nran(:)
51 integer(i8b),
pointer,
save ::
mran(:)
52 integer(i8b),
pointer,
save ::
ranv(:)
79 integer(i8b),
intent(in) :: length
83 integer(i8b) :: hgt, j, new, sz
89 IF (length.lt.
lenran)
RETURN
98 IF (
hg.ne.2147483647) &
99 &
CALL nrerror (
'RAN_INIT: arith assump 1 fails')
101 &
CALL nrerror (
'RAN_INIT: arith assump 2 fails')
102 IF ((hgt+1).ne.
hgng) &
103 &
CALL nrerror (
'RAN_INIT: arith assump 3 fails')
105 &
CALL nrerror (
'RAN_INIT: arith assump 4 fails')
106 IF (not(
hgng).lt.0) &
107 &
CALL nrerror (
'RAN_INIT: arith assump 5 fails')
109 &
CALL nrerror (
'RAN_INIT: arith assump 6 fails')
110 IF (not(-1_i8b).lt.0) &
111 &
CALL nrerror (
'RAN_INIT: arith assump 7 fails')
112 IF (not(0_i8b).ge.0) &
113 &
CALL nrerror (
'RAN_INIT: arith assump 8 fails')
114 IF (not(1_i8b).ge.0) &
115 &
CALL nrerror (
'RAN_INIT: arith assump 9 fails')
125 ALLOCATE (
ranv(length-1))
127 amm=nearest(1.0_r8,-1.0_r8)/
hgng
129 &
CALL nrerror (
'RAN_INIT: arth assump 10 fails')
167 IF (length.gt.1)
THEN
208 integer,
optional,
intent(in) :: sequence
209 integer,
optional,
intent(out) :: size
211 integer,
optional,
intent(in) :: put(:)
212 integer,
optional,
intent(out) :: get(:)
218 IF (
PRESENT(size))
THEN
220 ELSE IF (
PRESENT(put))
THEN
232 ELSE IF (
present(get))
THEN
236 ELSE IF (
PRESENT(sequence))
THEN
255 integer(i8b),
intent(inout) :: il, ir
259 integer(i8b) :: is, j
267 ir=ieor(ir,ishft(ir,5))+1422217823
268 ir=ieor(ir,ishft(ir,-16))+1842055030
269 ir=ieor(ir,ishft(ir,9))+80567781
288 integer(i8b),
intent(inout) :: il(:)
289 integer(i8b),
intent(inout) :: ir(:)
294 integer(i8b),
dimension(SIZE(il)) :: is
302 ir=ieor(ir,ishft(ir,5))+1422217823
303 ir=ieor(ir,ishft(ir,-16))+1842055030
304 ir=ieor(ir,ishft(ir,9))+80567781
subroutine nrerror(string)
subroutine ran_init(length)
integer(i8b), dimension(:), pointer, save jran
subroutine ran_seed(sequence, size, put, get)
integer(i8b), dimension(:), pointer, save kran
integer(i8b), dimension(:), pointer, save ranv
integer(i8b), parameter hgng
integer(i8b), save lenran
integer(i8b), dimension(:), pointer, save iran
integer(i8b), dimension(:), pointer, save mran
integer(i8b), parameter hgm
integer(i8b), dimension(:,:), pointer, save ranseeds
integer(i8b), dimension(:), pointer, save nran
subroutine ran_deallocate
subroutine ran_hash_s(il, ir)
integer(i8b), parameter hg
subroutine ran_hash_v(il, ir)