*> \brief \b DLAORD * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE DLAORD( JOB, N, X, INCX ) * * .. Scalar Arguments .. * CHARACTER JOB * INTEGER INCX, N * .. * .. Array Arguments .. * DOUBLE PRECISION X( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DLAORD sorts the elements of a vector x in increasing or decreasing *> order. *> \endverbatim * * Arguments: * ========== * *> \param[in] JOB *> \verbatim *> JOB is CHARACTER *> = 'I': Sort in increasing order *> = 'D': Sort in decreasing order *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The length of the vector X. *> \endverbatim *> *> \param[in,out] X *> \verbatim *> X is DOUBLE PRECISION array, dimension *> (1+(N-1)*INCX) *> On entry, the vector of length n to be sorted. *> On exit, the vector x is sorted in the prescribed order. *> \endverbatim *> *> \param[in] INCX *> \verbatim *> INCX is INTEGER *> The spacing between successive elements of X. INCX >= 0. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \ingroup double_lin * * ===================================================================== SUBROUTINE DLAORD( JOB, N, X, INCX ) * * -- LAPACK test routine -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * * .. Scalar Arguments .. CHARACTER JOB INTEGER INCX, N * .. * .. Array Arguments .. DOUBLE PRECISION X( * ) * .. * * ===================================================================== * * .. Local Scalars .. INTEGER I, INC, IX, IXNEXT DOUBLE PRECISION TEMP * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. Intrinsic Functions .. INTRINSIC ABS * .. * .. Executable Statements .. * INC = ABS( INCX ) IF( LSAME( JOB, 'I' ) ) THEN * * Sort in increasing order * DO 20 I = 2, N IX = 1 + ( I-1 )*INC 10 CONTINUE IF( IX.EQ.1 ) $ GO TO 20 IXNEXT = IX - INC IF( X( IX ).GT.X( IXNEXT ) ) THEN GO TO 20 ELSE TEMP = X( IX ) X( IX ) = X( IXNEXT ) X( IXNEXT ) = TEMP END IF IX = IXNEXT GO TO 10 20 CONTINUE * ELSE IF( LSAME( JOB, 'D' ) ) THEN * * Sort in decreasing order * DO 40 I = 2, N IX = 1 + ( I-1 )*INC 30 CONTINUE IF( IX.EQ.1 ) $ GO TO 40 IXNEXT = IX - INC IF( X( IX ).LT.X( IXNEXT ) ) THEN GO TO 40 ELSE TEMP = X( IX ) X( IX ) = X( IXNEXT ) X( IXNEXT ) = TEMP END IF IX = IXNEXT GO TO 30 40 CONTINUE END IF RETURN * * End of DLAORD * END