File indexing completed on 2023-03-17 11:04:08
0001 SUBROUTINE RNHRAN(Y,N,XLO,XWID,XRAN)
0002 CHARACTER*6 NAME(2)
0003
0004 DIMENSION Y(*)
0005
0006 DATA IERR /0/
0007 DATA NAME /'RNHRAN','RNHPRE'/
0008
0009 NTRY=1
0010 IF(Y(N) .EQ. 1) GOTO 4
0011 WRITE(6,101) NAME(1),Y(N)
0012 GOTO 5
0013
0014 ENTRY RNHPRE(Y,N)
0015 NTRY=2
0016
0017 5 YTOT=0
0018 DO 1 I = 1,N
0019 IF(Y(I) .LT. 0) GOTO 9
0020 YTOT=YTOT+Y(I)
0021 1 Y(I)=YTOT
0022 IF(YTOT .LE. 0) GOTO 9
0023 YINV=1/YTOT
0024 DO 2 I = 1,N
0025 2 Y(I)=Y(I)*YINV
0026 Y(N)=1
0027 IF(NTRY .EQ. 2) RETURN
0028
0029 4 CALL RANLUX(YR,1)
0030 L=LOCATR(Y,N,YR)
0031 IF(L .LT. 0) THEN
0032 L=-L
0033 XRAN=XLO+XWID*(L+((YR-Y(L))/(Y(L+1)-Y(L))))
0034 ELSEIF(L .EQ. 0) THEN
0035 XRAN=XLO+XWID*(YR/Y(1))
0036 ELSE
0037 XRAN=XLO+L*XWID
0038 ENDIF
0039 RETURN
0040
0041 9 IERR=IERR+1
0042 IF(IERR .LT. 6) WRITE(6,102) NAME(NTRY)
0043 WRITE(6,'(1X,10F13.7)') (Y(K),K=1,N)
0044 XRAN=0
0045 RETURN
0046 101 FORMAT(/7X,'+++++ CERN V149 ',A6,' : Y(N) = ',E15.6,' .NE. 1; ',
0047 1 'Y(I) NOT IN CUMULATIVE FORM.'/)
0048 102 FORMAT(/7X,'+++++ CERN V149 ',A6,' : NOT ALL VALUES Y(I) > 0'/)
0049 END
0050