Statistics
| Branch: | Revision:

root / synthbench / euroben-dm / mod2g / log2.f @ 0:839f52ef7657

History | View | Annotate | Download (943 Bytes)

1
      Integer Function log2( n )
2
! ---------------------------------------------------------------------
3
      Implicit    None
4
      Integer  :: n
5

    
6
      Integer  :: m, nl
7
! ---------------------------------------------------------------------
8
      If ( n < 1 ) Then
9
         Print *, '*** ERROR in function LOG2: Argument ', n,
10
     &            ' is not valid. (< 1).'
11
         log2 = -1
12
         Return
13
      End If
14
      If ( n == 1 ) Then
15
         log2 = 0
16
         Return
17
      End If
18
      nl = n
19
      m  = 0
20
      Do
21
         If ( Mod( nl, 2 ) /= 0 .AND. ( nl /= 1 ) ) Then
22
            Print *, '***ERROR in function LOG2: Argument ', n,
23
     &               ' is not a power of 2.'
24
            log2 = -1
25
            Return
26
         End If
27
         If ( nl == 1 ) Exit
28
         nl = nl/2
29
         m  = m + 1
30
      End Do
31
      log2 = m
32
! ---------------------------------------------------------------------
33
      End Function log2