hdiff output

r31313/mc_gbh.F90 2016-10-14 08:30:13.716850365 +0100 r31312/mc_gbh.F90 2016-10-14 08:30:13.964853695 +0100
192:   ! Choose an element of VALUES with Boltzmann probability192:   ! Choose an element of VALUES with Boltzmann probability
193:   !193:   !
194:   USE COMMONS, ONLY : TEMP194:   USE COMMONS, ONLY : TEMP
195:   !195:   !
196:   IMPLICIT NONE196:   IMPLICIT NONE
197:   !197:   !
198:   INTEGER, INTENT(IN) :: N198:   INTEGER, INTENT(IN) :: N
199:   DOUBLE PRECISION, INTENT(IN) :: VALUES(N)199:   DOUBLE PRECISION, INTENT(IN) :: VALUES(N)
200:   INTEGER, INTENT(OUT) :: I200:   INTEGER, INTENT(OUT) :: I
201:   !201:   !
202:   LOGICAL :: SELECTIVE202:   DOUBLE PRECISION :: PSUM(N), X, DPRAND, ELOWEST
203:   DOUBLE PRECISION :: PSUM(N), X, Y, DPRAND, ELOWEST 
204:   !203:   !
205:   ELOWEST=MINVAL(VALUES(0:N))204:   ELOWEST=MINVAL(VALUES(0:N))
206:   IF (MINLOC(VALUES,1)==N) THEN 
207:      SELECTIVE=.FALSE. 
208:   ELSE 
209:      SELECTIVE=.TRUE. 
210:   ENDIF 
211:   !205:   !
212:   X=0.0D0 ! initialise total sum206:   X=0.0D0 ! initialise total sum
213:   DO I=1,N207:   DO I=1,N 
214:      IF(SELECTIVE) THEN208:      X = X + DEXP(-(VALUES(I)-ELOWEST)/TEMP(1))
215:         IF(VALUES(I) < VALUES(N)) THEN 
216:            Y = DEXP(-(VALUES(I)-ELOWEST)/TEMP(1)) 
217:         ELSE 
218:            Y = 0.0D0 ! avoid selection  
219:         ENDIF     
220:      ELSE 
221:         Y = DEXP(-(VALUES(I)-ELOWEST)/TEMP(1)) 
222:      ENDIF 
223:      X = X + Y 
224:      PSUM(I) = X ! store partial sum209:      PSUM(I) = X ! store partial sum
225:   ENDDO210:   ENDDO
226:   !211:   !
227:   X=X*DPRAND()212:   X=X*DPRAND()
228:   !213:   !
229:   I=1214:   I=1
230:   DO WHILE (X > PSUM(I))215:   DO WHILE (X > PSUM(I))
231:      I=I+1216:      I=I+1
232:   ENDDO217:   ENDDO
233:   !218:   !


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0