* * $Id$ * * $Log$ * Revision 1.1.1.1 1995/10/24 10:21:06 cernlib * Geant * * #include "geant321/pilot.h" *CMZ : 3.21/02 29/03/94 15.41.40 by S.Giani *-- Author : SUBROUTINE DLPNUC(A,N) C C CALLED BY : PHPNUC C ORIGIN : H.FESEFELDT C #if !defined(CERNLIB_SINGLE) IMPLICIT DOUBLE PRECISION (A-H,O-Z) #endif C DIMENSION A(N) DIMENSION LT(20),RT(20) INTEGER R,RT C LEVEL=1 LT(1)=1 RT(1)=N 10 L=LT(LEVEL) R=RT(LEVEL) LEVEL=LEVEL-1 20 IF(R.LE.L) IF(LEVEL) 50,50,10 C C SUBDIVIDE THE INTERVAL L,R C L : LOWER LIMIT OF THE INTERVAL (INPUT) C R : UPPER LIMIT OF THE INTERVAL (INPUT) C J : UPPER LIMIT OF LOWER SUB-INTERVAL (OUTPUT) C I : LOWER LIMIT OF UPPER SUB-INTERVAL (OUTPUT) C I=L J=R M=(L+R)/2 X=A(M) 220 IF(A(I).GE.X) GO TO 230 I=I+1 GO TO 220 230 IF(A(J).LE.X) GO TO 231 J=J-1 GO TO 230 C 231 IF(I.GT.J) GO TO 232 W=A(I) A(I)=A(J) A(J)=W I=I+1 J=J-1 IF(I.LE.J) GO TO 220 C 232 LEVEL=LEVEL+1 IF((R-I).GE.(J-L)) GO TO 30 LT(LEVEL)=L RT(LEVEL)=J L=I GO TO 20 30 LT(LEVEL)=I RT(LEVEL)=R R=J GO TO 20 50 RETURN END