]> git.uio.no Git - u/mrichter/AliRoot.git/blame - GEANT321/gheisha/dlpsor.F
Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / GEANT321 / gheisha / dlpsor.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.1.1.1 1995/10/24 10:21:01 cernlib
6* Geant
7*
8*
9#include "geant321/pilot.h"
10*CMZ : 3.21/02 29/03/94 15.41.39 by S.Giani
11*-- Author :
12 SUBROUTINE DLPSOR(A,N)
13C
14C *** DOUBLE PRECISION VERSION OF CERNLIB ROUTINE "FLPSOR" ***
15C *** NVE 29-MAR-1988 CERN GENEVA ***
16C
17C CALLED BY : PHASP
18C ORIGIN : H.FESEFELDT (02-DEC-1986)
19C
20#if !defined(CERNLIB_SINGLE)
21 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
22#endif
23C
24 DIMENSION A(N)
25 DIMENSION LT(20),RT(20)
26 INTEGER R,RT
27C
28 LEVEL=1
29 LT(1)=1
30 RT(1)=N
31 10 L=LT(LEVEL)
32 R=RT(LEVEL)
33 LEVEL=LEVEL-1
34 20 IF(R.LE.L) IF(LEVEL) 50,50,10
35C
36C SUBDIVIDE THE INTERVAL L,R
37C L : LOWER LIMIT OF THE INTERVAL (INPUT)
38C R : UPPER LIMIT OF THE INTERVAL (INPUT)
39C J : UPPER LIMIT OF LOWER SUB-INTERVAL (OUTPUT)
40C I : LOWER LIMIT OF UPPER SUB-INTERVAL (OUTPUT)
41C
42 I=L
43 J=R
44 M=(L+R)/2
45 X=A(M)
46 220 IF(A(I).GE.X) GO TO 230
47 I=I+1
48 GO TO 220
49 230 IF(A(J).LE.X) GO TO 231
50 J=J-1
51 GO TO 230
52C
53 231 IF(I.GT.J) GO TO 232
54 W=A(I)
55 A(I)=A(J)
56 A(J)=W
57 I=I+1
58 J=J-1
59 IF(I.LE.J) GO TO 220
60C
61 232 LEVEL=LEVEL+1
62 IF((R-I).GE.(J-L)) GO TO 30
63 LT(LEVEL)=L
64 RT(LEVEL)=J
65 L=I
66 GO TO 20
67 30 LT(LEVEL)=I
68 RT(LEVEL)=R
69 R=J
70 GO TO 20
71 50 RETURN
72 END