1*> \brief \b SLAORD
2*
3*  =========== DOCUMENTATION ===========
4*
5* Online html documentation available at
6*            http://www.netlib.org/lapack/explore-html/
7*
8*  Definition:
9*  ===========
10*
11*       SUBROUTINE SLAORD( JOB, N, X, INCX )
12*
13*       .. Scalar Arguments ..
14*       CHARACTER          JOB
15*       INTEGER            INCX, N
16*       ..
17*       .. Array Arguments ..
18*       REAL               X( * )
19*       ..
20*
21*
22*> \par Purpose:
23*  =============
24*>
25*> \verbatim
26*>
27*> SLAORD sorts the elements of a vector x in increasing or decreasing
28*> order.
29*> \endverbatim
30*
31*  Arguments:
32*  ==========
33*
34*> \param[in] JOB
35*> \verbatim
36*>          JOB is CHARACTER
37*>          = 'I':  Sort in increasing order
38*>          = 'D':  Sort in decreasing order
39*> \endverbatim
40*>
41*> \param[in] N
42*> \verbatim
43*>          N is INTEGER
44*>          The length of the vector X.
45*> \endverbatim
46*>
47*> \param[in,out] X
48*> \verbatim
49*>          X is REAL array, dimension
50*>                         (1+(N-1)*INCX)
51*>          On entry, the vector of length n to be sorted.
52*>          On exit, the vector x is sorted in the prescribed order.
53*> \endverbatim
54*>
55*> \param[in] INCX
56*> \verbatim
57*>          INCX is INTEGER
58*>          The spacing between successive elements of X.  INCX >= 0.
59*> \endverbatim
60*
61*  Authors:
62*  ========
63*
64*> \author Univ. of Tennessee
65*> \author Univ. of California Berkeley
66*> \author Univ. of Colorado Denver
67*> \author NAG Ltd.
68*
69*> \ingroup single_lin
70*
71*  =====================================================================
72      SUBROUTINE SLAORD( JOB, N, X, INCX )
73*
74*  -- LAPACK test routine --
75*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
76*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
77*
78*     .. Scalar Arguments ..
79      CHARACTER          JOB
80      INTEGER            INCX, N
81*     ..
82*     .. Array Arguments ..
83      REAL               X( * )
84*     ..
85*
86*  =====================================================================
87*
88*     .. Local Scalars ..
89      INTEGER            I, INC, IX, IXNEXT
90      REAL               TEMP
91*     ..
92*     .. External Functions ..
93      LOGICAL            LSAME
94      EXTERNAL           LSAME
95*     ..
96*     .. Intrinsic Functions ..
97      INTRINSIC          ABS
98*     ..
99*     .. Executable Statements ..
100*
101      INC = ABS( INCX )
102      IF( LSAME( JOB, 'I' ) ) THEN
103*
104*        Sort in increasing order
105*
106         DO 20 I = 2, N
107            IX = 1 + ( I-1 )*INC
108   10       CONTINUE
109            IF( IX.EQ.1 )
110     $         GO TO 20
111            IXNEXT = IX - INC
112            IF( X( IX ).GT.X( IXNEXT ) ) THEN
113               GO TO 20
114            ELSE
115               TEMP = X( IX )
116               X( IX ) = X( IXNEXT )
117               X( IXNEXT ) = TEMP
118            END IF
119            IX = IXNEXT
120            GO TO 10
121   20    CONTINUE
122*
123      ELSE IF( LSAME( JOB, 'D' ) ) THEN
124*
125*        Sort in decreasing order
126*
127         DO 40 I = 2, N
128            IX = 1 + ( I-1 )*INC
129   30       CONTINUE
130            IF( IX.EQ.1 )
131     $         GO TO 40
132            IXNEXT = IX - INC
133            IF( X( IX ).LT.X( IXNEXT ) ) THEN
134               GO TO 40
135            ELSE
136               TEMP = X( IX )
137               X( IX ) = X( IXNEXT )
138               X( IXNEXT ) = TEMP
139            END IF
140            IX = IXNEXT
141            GO TO 30
142   40    CONTINUE
143      END IF
144      RETURN
145*
146*     End of SLAORD
147*
148      END
149