1*bf2c3715SXin Li*> \brief \b ILADLR 2*bf2c3715SXin Li* 3*bf2c3715SXin Li* =========== DOCUMENTATION =========== 4*bf2c3715SXin Li* 5*bf2c3715SXin Li* Online html documentation available at 6*bf2c3715SXin Li* http://www.netlib.org/lapack/explore-html/ 7*bf2c3715SXin Li* 8*bf2c3715SXin Li*> \htmlonly 9*bf2c3715SXin Li*> Download ILADLR + dependencies 10*bf2c3715SXin Li*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/iladlr.f"> 11*bf2c3715SXin Li*> [TGZ]</a> 12*bf2c3715SXin Li*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/iladlr.f"> 13*bf2c3715SXin Li*> [ZIP]</a> 14*bf2c3715SXin Li*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/iladlr.f"> 15*bf2c3715SXin Li*> [TXT]</a> 16*bf2c3715SXin Li*> \endhtmlonly 17*bf2c3715SXin Li* 18*bf2c3715SXin Li* Definition: 19*bf2c3715SXin Li* =========== 20*bf2c3715SXin Li* 21*bf2c3715SXin Li* INTEGER FUNCTION ILADLR( M, N, A, LDA ) 22*bf2c3715SXin Li* 23*bf2c3715SXin Li* .. Scalar Arguments .. 24*bf2c3715SXin Li* INTEGER M, N, LDA 25*bf2c3715SXin Li* .. 26*bf2c3715SXin Li* .. Array Arguments .. 27*bf2c3715SXin Li* DOUBLE PRECISION A( LDA, * ) 28*bf2c3715SXin Li* .. 29*bf2c3715SXin Li* 30*bf2c3715SXin Li* 31*bf2c3715SXin Li*> \par Purpose: 32*bf2c3715SXin Li* ============= 33*bf2c3715SXin Li*> 34*bf2c3715SXin Li*> \verbatim 35*bf2c3715SXin Li*> 36*bf2c3715SXin Li*> ILADLR scans A for its last non-zero row. 37*bf2c3715SXin Li*> \endverbatim 38*bf2c3715SXin Li* 39*bf2c3715SXin Li* Arguments: 40*bf2c3715SXin Li* ========== 41*bf2c3715SXin Li* 42*bf2c3715SXin Li*> \param[in] M 43*bf2c3715SXin Li*> \verbatim 44*bf2c3715SXin Li*> M is INTEGER 45*bf2c3715SXin Li*> The number of rows of the matrix A. 46*bf2c3715SXin Li*> \endverbatim 47*bf2c3715SXin Li*> 48*bf2c3715SXin Li*> \param[in] N 49*bf2c3715SXin Li*> \verbatim 50*bf2c3715SXin Li*> N is INTEGER 51*bf2c3715SXin Li*> The number of columns of the matrix A. 52*bf2c3715SXin Li*> \endverbatim 53*bf2c3715SXin Li*> 54*bf2c3715SXin Li*> \param[in] A 55*bf2c3715SXin Li*> \verbatim 56*bf2c3715SXin Li*> A is DOUBLE PRECISION array, dimension (LDA,N) 57*bf2c3715SXin Li*> The m by n matrix A. 58*bf2c3715SXin Li*> \endverbatim 59*bf2c3715SXin Li*> 60*bf2c3715SXin Li*> \param[in] LDA 61*bf2c3715SXin Li*> \verbatim 62*bf2c3715SXin Li*> LDA is INTEGER 63*bf2c3715SXin Li*> The leading dimension of the array A. LDA >= max(1,M). 64*bf2c3715SXin Li*> \endverbatim 65*bf2c3715SXin Li* 66*bf2c3715SXin Li* Authors: 67*bf2c3715SXin Li* ======== 68*bf2c3715SXin Li* 69*bf2c3715SXin Li*> \author Univ. of Tennessee 70*bf2c3715SXin Li*> \author Univ. of California Berkeley 71*bf2c3715SXin Li*> \author Univ. of Colorado Denver 72*bf2c3715SXin Li*> \author NAG Ltd. 73*bf2c3715SXin Li* 74*bf2c3715SXin Li*> \date April 2012 75*bf2c3715SXin Li* 76*bf2c3715SXin Li*> \ingroup auxOTHERauxiliary 77*bf2c3715SXin Li* 78*bf2c3715SXin Li* ===================================================================== 79*bf2c3715SXin Li INTEGER FUNCTION ILADLR( M, N, A, LDA ) 80*bf2c3715SXin Li* 81*bf2c3715SXin Li* -- LAPACK auxiliary routine (version 3.4.1) -- 82*bf2c3715SXin Li* -- LAPACK is a software package provided by Univ. of Tennessee, -- 83*bf2c3715SXin Li* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- 84*bf2c3715SXin Li* April 2012 85*bf2c3715SXin Li* 86*bf2c3715SXin Li* .. Scalar Arguments .. 87*bf2c3715SXin Li INTEGER M, N, LDA 88*bf2c3715SXin Li* .. 89*bf2c3715SXin Li* .. Array Arguments .. 90*bf2c3715SXin Li DOUBLE PRECISION A( LDA, * ) 91*bf2c3715SXin Li* .. 92*bf2c3715SXin Li* 93*bf2c3715SXin Li* ===================================================================== 94*bf2c3715SXin Li* 95*bf2c3715SXin Li* .. Parameters .. 96*bf2c3715SXin Li DOUBLE PRECISION ZERO 97*bf2c3715SXin Li PARAMETER ( ZERO = 0.0D+0 ) 98*bf2c3715SXin Li* .. 99*bf2c3715SXin Li* .. Local Scalars .. 100*bf2c3715SXin Li INTEGER I, J 101*bf2c3715SXin Li* .. 102*bf2c3715SXin Li* .. Executable Statements .. 103*bf2c3715SXin Li* 104*bf2c3715SXin Li* Quick test for the common case where one corner is non-zero. 105*bf2c3715SXin Li IF( M.EQ.0 ) THEN 106*bf2c3715SXin Li ILADLR = M 107*bf2c3715SXin Li ELSE IF( A(M, 1).NE.ZERO .OR. A(M, N).NE.ZERO ) THEN 108*bf2c3715SXin Li ILADLR = M 109*bf2c3715SXin Li ELSE 110*bf2c3715SXin Li* Scan up each column tracking the last zero row seen. 111*bf2c3715SXin Li ILADLR = 0 112*bf2c3715SXin Li DO J = 1, N 113*bf2c3715SXin Li I=M 114*bf2c3715SXin Li DO WHILE((A(MAX(I,1),J).EQ.ZERO).AND.(I.GE.1)) 115*bf2c3715SXin Li I=I-1 116*bf2c3715SXin Li ENDDO 117*bf2c3715SXin Li ILADLR = MAX( ILADLR, I ) 118*bf2c3715SXin Li END DO 119*bf2c3715SXin Li END IF 120*bf2c3715SXin Li RETURN 121*bf2c3715SXin Li END 122