Annotation of rpl/lapack/lapack/iladlr.f, revision 1.3

1.1       bertrand    1:       INTEGER FUNCTION ILADLR(M, N, A, LDA)
                      2:       IMPLICIT NONE
                      3: *
                      4: *  -- LAPACK auxiliary routine (version 3.2.1)                        --
                      5: *
                      6: *  -- April 2009                                                      --
                      7: *
                      8: *  -- LAPACK is a software package provided by Univ. of Tennessee,    --
                      9: *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
                     10: *
                     11: *     .. Scalar Arguments ..
                     12:       INTEGER            M, N, LDA
                     13: *     ..
                     14: *     .. Array Arguments ..
                     15:       DOUBLE PRECISION   A( LDA, * )
                     16: *     ..
                     17: *
                     18: *  Purpose
                     19: *  =======
                     20: *
                     21: *  ILADLR scans A for its last non-zero row.
                     22: *
                     23: *  Arguments
                     24: *  =========
                     25: *
                     26: *  M       (input) INTEGER
                     27: *          The number of rows of the matrix A.
                     28: *
                     29: *  N       (input) INTEGER
                     30: *          The number of columns of the matrix A.
                     31: *
                     32: *  A       (input) DOUBLE PRECISION array, dimension (LDA,N)
                     33: *          The m by n matrix A.
                     34: *
                     35: *  LDA     (input) INTEGER
                     36: *          The leading dimension of the array A. LDA >= max(1,M).
                     37: *
                     38: *  =====================================================================
                     39: *
                     40: *     .. Parameters ..
                     41:       DOUBLE PRECISION ZERO
                     42:       PARAMETER ( ZERO = 0.0D+0 )
                     43: *     ..
                     44: *     .. Local Scalars ..
                     45:       INTEGER I, J
                     46: *     ..
                     47: *     .. Executable Statements ..
                     48: *
                     49: *     Quick test for the common case where one corner is non-zero.
                     50:       IF( M.EQ.0 ) THEN
                     51:          ILADLR = M
                     52:       ELSE IF( A(M, 1).NE.ZERO .OR. A(M, N).NE.ZERO ) THEN
                     53:          ILADLR = M
                     54:       ELSE
                     55: *     Scan up each column tracking the last zero row seen.
                     56:          ILADLR = 0
                     57:          DO J = 1, N
                     58:             DO I = M, 1, -1
                     59:                IF( A(I, J).NE.ZERO ) EXIT
                     60:             END DO
                     61:             ILADLR = MAX( ILADLR, I )
                     62:          END DO
                     63:       END IF
                     64:       RETURN
                     65:       END FUNCTION

CVSweb interface <joel.bertrand@systella.fr>