--- rpl/lapack/lapack/iladlr.f 2010/08/06 15:32:37 1.4 +++ rpl/lapack/lapack/iladlr.f 2023/08/07 08:39:14 1.21 @@ -1,10 +1,82 @@ - INTEGER FUNCTION ILADLR(M, N, A, LDA) - IMPLICIT NONE +*> \brief \b ILADLR scans a matrix for its last non-zero row. * -* -- LAPACK auxiliary routine (version 3.2.1) -- +* =========== DOCUMENTATION =========== * -* -- April 2009 -- +* Online html documentation available at +* http://www.netlib.org/lapack/explore-html/ * +*> \htmlonly +*> Download ILADLR + dependencies +*> +*> [TGZ] +*> +*> [ZIP] +*> +*> [TXT] +*> \endhtmlonly +* +* Definition: +* =========== +* +* INTEGER FUNCTION ILADLR( M, N, A, LDA ) +* +* .. Scalar Arguments .. +* INTEGER M, N, LDA +* .. +* .. Array Arguments .. +* DOUBLE PRECISION A( LDA, * ) +* .. +* +* +*> \par Purpose: +* ============= +*> +*> \verbatim +*> +*> ILADLR scans A for its last non-zero row. +*> \endverbatim +* +* Arguments: +* ========== +* +*> \param[in] M +*> \verbatim +*> M is INTEGER +*> The number of rows of the matrix A. +*> \endverbatim +*> +*> \param[in] N +*> \verbatim +*> N is INTEGER +*> The number of columns of the matrix A. +*> \endverbatim +*> +*> \param[in] A +*> \verbatim +*> A is DOUBLE PRECISION array, dimension (LDA,N) +*> The m by n matrix A. +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim +* +* Authors: +* ======== +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \ingroup OTHERauxiliary +* +* ===================================================================== + INTEGER FUNCTION ILADLR( M, N, A, LDA ) +* +* -- LAPACK auxiliary routine -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * @@ -15,26 +87,6 @@ DOUBLE PRECISION A( LDA, * ) * .. * -* Purpose -* ======= -* -* ILADLR scans A for its last non-zero row. -* -* Arguments -* ========= -* -* M (input) INTEGER -* The number of rows of the matrix A. -* -* N (input) INTEGER -* The number of columns of the matrix A. -* -* A (input) DOUBLE PRECISION array, dimension (LDA,N) -* The m by n matrix A. -* -* LDA (input) INTEGER -* The leading dimension of the array A. LDA >= max(1,M). -* * ===================================================================== * * .. Parameters .. @@ -55,11 +107,12 @@ * Scan up each column tracking the last zero row seen. ILADLR = 0 DO J = 1, N - DO I = M, 1, -1 - IF( A(I, J).NE.ZERO ) EXIT - END DO + I=M + DO WHILE((A(MAX(I,1),J).EQ.ZERO).AND.(I.GE.1)) + I=I-1 + ENDDO ILADLR = MAX( ILADLR, I ) END DO END IF RETURN - END FUNCTION + END