108 parameter(
SELECT = 20 )
111 INTEGER dir, endd, i,
j, start, stkpnt
112 REAL d1, d2, d3, dmnmx, tmp
115 INTEGER stack( 2, 32 )
130 IF(
lsame( id,
'D' ) )
THEN
132 ELSE IF(
lsame( id,
'I' ) )
THEN
137 ELSE IF( n.LT.0 )
THEN
141 CALL
xerbla(
'SLASRT', -info )
154 start = stack( 1, stkpnt )
155 endd = stack( 2, stkpnt )
157 IF( endd-start.LE.
SELECT .AND. endd-start.GT.0 )
THEN
165 DO 30 i = start + 1, endd
166 DO 20
j = i, start + 1, -1
167 IF( d(
j ).GT.d(
j-1 ) )
THEN
181 DO 50 i = start + 1, endd
182 DO 40
j = i, start + 1, -1
183 IF( d(
j ).LT.d(
j-1 ) )
THEN
195 ELSE IF( endd-start.GT.
SELECT )
THEN
203 i = ( start+endd ) / 2
208 ELSE IF( d3.LT.d2 )
THEN
216 ELSE IF( d3.LT.d1 )
THEN
232 IF( d(
j ).LT.dmnmx )
236 IF( d( i ).GT.dmnmx )
244 IF(
j-start.GT.endd-
j-1 )
THEN
246 stack( 1, stkpnt ) = start
247 stack( 2, stkpnt ) =
j
249 stack( 1, stkpnt ) =
j + 1
250 stack( 2, stkpnt ) = endd
253 stack( 1, stkpnt ) =
j + 1
254 stack( 2, stkpnt ) = endd
256 stack( 1, stkpnt ) = start
257 stack( 2, stkpnt ) =
j
268 IF( d(
j ).GT.dmnmx )
272 IF( d( i ).LT.dmnmx )
280 IF(
j-start.GT.endd-
j-1 )
THEN
282 stack( 1, stkpnt ) = start
283 stack( 2, stkpnt ) =
j
285 stack( 1, stkpnt ) =
j + 1
286 stack( 2, stkpnt ) = endd
289 stack( 1, stkpnt ) =
j + 1
290 stack( 2, stkpnt ) = endd
292 stack( 1, stkpnt ) = start
293 stack( 2, stkpnt ) =
j
LOGICAL function lsame(CA, CB)
LSAME
subroutine xerbla(SRNAME, INFO)
XERBLA
set ue cd $ADTTMP cat<< EOF > tmp f Program LinearEquations Implicit none Real j
subroutine slasrt(ID, N, D, INFO)
SLASRT sorts numbers in increasing or decreasing order.