COSMOS v7.655  COSMOSv7655
(AirShowerMC)
kmanbit.f
Go to the documentation of this file.
1 #undef ABSOFT
2 #ifdef NEXT486
3 #define ABSOFT
4 #elif defined PCLINUX
5 #define ABSOFT
6 #elif defined MACOSX
7 #define ABSOFT
8 #endif
9 !
10 ! manipulate bit
11 !
12  logical function kbitest( i, bit )
13  implicit none
14  integer i ! input. it's bit-th bit is tested.
15  integer bit ! input. (1<- bit <=31)
16 ! function value. .true. if bit-th bit of i is on.
17 ! else .false.
18 ! if bit is outside of the range,
19 ! .false. is returned.
20 !
21  integer j, k
22 #ifdef ABSOFT
23  kbitest = btest(i, bit-1)
24 #else
25 
26  if( bit .le. 0 .or. bit .ge. 32) then
27  kbitest = .false.
28  else
29  j = lshift(i, 32-bit)
30  k = rshift(j, 31)
31  kbitest = k .ne. 0
32  endif
33 #endif
34  end
35  subroutine ksetbit( i, bit )
36  implicit none
37  integer i ! input/output.
38  integer bit ! input. bit-th position of i is made to be on.
39 !
40  logical kbitest
41  integer j, k
42 #ifdef ABSOFT
43  i = ibset(i, bit-1)
44 #else
45  if(bit .gt. 0 .and. bit .lt. 32) then
46  if( .not. kbitest(i, bit) ) then
47  i = i + 2**(bit-1)
48  endif
49  endif
50 #endif
51  end
52  subroutine krsetbit( i, bit )
53  implicit none
54  integer i ! input/output.
55  integer bit ! input. bit-th position of i is made to be off.
56 !
57  logical kbitest
58  integer j, k
59 #ifdef ABSOFT
60  i = ibclr(i, bit-1)
61 #else
62  if(bit .gt. 0 .and. bit .lt. 32) then
63  if( kbitest(i, bit) ) then
64  i = i - 2**(bit-1)
65  endif
66  endif
67 #endif
68  end
69  subroutine krevbit( i, bit )
70 ! reverse bit-th bit of i.
71  implicit none
72  integer i ! input/output.
73  integer bit ! input. bit-th position of i is made to be reverted
74 !
75  logical kbitest
76  integer j, k
77 #ifdef ABSOFT
78  if(kbitest(i, bit)) then
79  i = ibclr(i, bit-1)
80  else
81  i = ibset(i, bit-1)
82  endif
83 #else
84  if(bit .gt. 0 .and. bit .lt. 32) then
85  if( kbitest(i, bit) ) then
86  i = i - 2**(bit-1)
87  else
88  i = i + 2**(bit-1)
89  endif
90  endif
91 #endif
92  end
93 
94 ! test kbitest.
95 !
96 ! integer i, j
97 ! logical kbitest
98 !
99 ! do while ( .true. )
100 ! read(*, *) i, j
101 ! write(*,*) i, j, kbitest(i, j)
102 ! call ksetbit(i, j)
103 ! write(*, *) i, kbitest(i, j)
104 ! call krsetbit(i, j)
105 ! write(*, *) i, kbitest(i, j)
106 ! call krsetbit(i, j)
107 ! write(*, *) i, kbitest(i, j)
108 ! enddo
109 ! end
110 
111 
112 
113 
subroutine krsetbit(i, bit)
Definition: kmanbit.f:53
subroutine krevbit(i, bit)
Definition: kmanbit.f:70
subroutine ksetbit(i, bit)
Definition: kmanbit.f:36
logical function kbitest(i, bit)
Definition: kmanbit.f:13
block data cblkElemag data *AnihiE ! Eposi< 1 TeV, anihilation considered *X0/365.667/, ! radiation length of air in kg/m2 *Ecrit/81.e-3/, ! critical energy of air in GeV *MaxComptonE/1./, ! compton is considered below 1 GeV *MaxPhotoE/1.e-3/, ! above this, PhotoElectric effect neg. *MinPhotoProdE/153.e-3/, ! below 153 MeV, no gp --> hadrons ! scattering const not MeV *Knockon ! knockon is considered Obsolete *PhotoProd false
Definition: cblkElemag.h:7