1: INTEGER FUNCTION ILADLR( M, N, A, LDA )
2: IMPLICIT NONE
3: *
4: * -- LAPACK auxiliary routine (version 3.2.2) --
5: *
6: * -- June 2010 --
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
CVSweb interface <joel.bertrand@systella.fr>