File:  [local] / rpl / lapack / lapack / iladlr.f
Revision 1.9: download - view: text, annotated - select for diffs - revision graph
Fri Jul 22 07:38:13 2011 UTC (12 years, 9 months ago) by bertrand
Branches: MAIN
CVS tags: rpl-4_1_3, rpl-4_1_2, rpl-4_1_1, HEAD
En route vers la 4.4.1.

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

CVSweb interface <joel.bertrand@systella.fr>