Files
lapack/SRC/iladlr.f
T

61 lines
1.5 KiB
FortranFixed

INTEGER FUNCTION ILADLR(M, N, A, LDA)
IMPLICIT NONE
!
! -- LAPACK auxiliary routine (version 3.1) --
! Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
! December 2007
!
! .. Scalar Arguments ..
INTEGER M, N, LDA
! ..
! .. Array Arguments ..
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 ..
DOUBLE PRECISION ZERO
PARAMETER ( ZERO = 0.0D+0 )
! ..
! .. Local Scalars ..
INTEGER I, J
! ..
! .. Executable Statements ..
!
! Quick test for the common case where one corner is non-zero.
IF( M.EQ.0 .OR. A(M, 1).NE.ZERO .OR. A(M, N).NE.ZERO ) THEN
ILADLR = M
ELSE
! 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
ILADLR = MAX( ILADLR, I )
END DO
END IF
RETURN
END FUNCTION