Statistics
| Branch: | Revision:

root / synthbench / euroben-dm / mod2h / rinit.f @ 0:839f52ef7657

History | View | Annotate | Download (1.2 kB)

1
      Subroutine rinit( n, a, nodes, me )
2
! ----------------------------------------------------------------------
3
      Use           numerics
4
      Use           ran_module
5
      Implicit      None
6

    
7
      Integer    :: n
8
      Real(l_)   :: a(n)
9
      Integer    :: nodes, me
10

    
11
      Integer(8) :: af1, af2, ci1, ci2
12
      Integer(8) :: i, j
13
! ----------------------------------------------------------------------
14
      ak1 = 1
15
      ak2 = 1
16
      ck1 = 0
17
      ck2 = 0
18
      Do i = 1, nodes
19
         af1 = ak1
20
         af2 = ak2
21
         ak1 = Mod( a1*ak1, m1 )
22
         ak2 = Mod( a2*ak2, m2 )
23
         ci1 = 0
24
         Do j = 1, c1
25
            ci1 = Mod( ci1 + af1, m1 )
26
         End Do
27
         ci2 = 0
28
         Do j = 1, c2
29
            ci2 = Mod( ci2 + af2, m2 )
30
         End Do
31
         ck1 = Mod( Mod( ck1, m1 ) + ci1, m1 )
32
         ck2 = Mod( Mod( ck2, m2 ) + ci2, m2 )
33
      End Do
34
      Do i = 1, me + 97                          ! --- Warming up phase.
35
         x1 = Mod( a1*x1 + c1, m1 )
36
         x2 = Mod( a2*x2 + c2, m2 )
37
      End Do
38
      a(1) = ( Real( x1, l_ ) + Real( x2, l_ )*rm2 )*rm1
39
! ----------------------------------------------------------------------
40
      End Subroutine rinit