root / src / lapack / util / iladlr.f @ 1
Historique | Voir | Annoter | Télécharger (1,47 ko)
1 | 1 | equemene | INTEGER FUNCTION ILADLR(M, N, A, LDA) |
---|---|---|---|
2 | 1 | equemene | IMPLICIT NONE |
3 | 1 | equemene | ! |
4 | 1 | equemene | ! -- LAPACK auxiliary routine (version 3.2) -- |
5 | 1 | equemene | ! Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd.. |
6 | 1 | equemene | ! December 2007 |
7 | 1 | equemene | ! |
8 | 1 | equemene | ! .. Scalar Arguments .. |
9 | 1 | equemene | INTEGER M, N, LDA |
10 | 1 | equemene | ! .. |
11 | 1 | equemene | ! .. Array Arguments .. |
12 | 1 | equemene | DOUBLE PRECISION A( LDA, * ) |
13 | 1 | equemene | ! .. |
14 | 1 | equemene | ! |
15 | 1 | equemene | ! Purpose |
16 | 1 | equemene | ! ======= |
17 | 1 | equemene | ! |
18 | 1 | equemene | ! ILADLR scans A for its last non-zero row. |
19 | 1 | equemene | ! |
20 | 1 | equemene | ! Arguments |
21 | 1 | equemene | ! ========= |
22 | 1 | equemene | ! |
23 | 1 | equemene | ! M (input) INTEGER |
24 | 1 | equemene | ! The number of rows of the matrix A. |
25 | 1 | equemene | ! |
26 | 1 | equemene | ! N (input) INTEGER |
27 | 1 | equemene | ! The number of columns of the matrix A. |
28 | 1 | equemene | ! |
29 | 1 | equemene | ! A (input) DOUBLE PRECISION array, dimension (LDA,N) |
30 | 1 | equemene | ! The m by n matrix A. |
31 | 1 | equemene | ! |
32 | 1 | equemene | ! LDA (input) INTEGER |
33 | 1 | equemene | ! The leading dimension of the array A. LDA >= max(1,M). |
34 | 1 | equemene | ! |
35 | 1 | equemene | ! ===================================================================== |
36 | 1 | equemene | ! |
37 | 1 | equemene | ! .. Parameters .. |
38 | 1 | equemene | DOUBLE PRECISION ZERO |
39 | 1 | equemene | PARAMETER ( ZERO = 0.0D+0 ) |
40 | 1 | equemene | ! .. |
41 | 1 | equemene | ! .. Local Scalars .. |
42 | 1 | equemene | INTEGER I, J |
43 | 1 | equemene | ! .. |
44 | 1 | equemene | ! .. Executable Statements .. |
45 | 1 | equemene | ! |
46 | 1 | equemene | ! Quick test for the common case where one corner is non-zero. |
47 | 1 | equemene | IF( M.EQ.0 .OR. A(M, 1).NE.ZERO .OR. A(M, N).NE.ZERO ) THEN |
48 | 1 | equemene | ILADLR = M |
49 | 1 | equemene | ELSE |
50 | 1 | equemene | ! Scan up each column tracking the last zero row seen. |
51 | 1 | equemene | ILADLR = 0 |
52 | 1 | equemene | DO J = 1, N |
53 | 1 | equemene | DO I = M, 1, -1 |
54 | 1 | equemene | IF( A(I, J).NE.ZERO ) EXIT |
55 | 1 | equemene | END DO |
56 | 1 | equemene | ILADLR = MAX( ILADLR, I ) |
57 | 1 | equemene | END DO |
58 | 1 | equemene | END IF |
59 | 1 | equemene | RETURN |
60 | 1 | equemene | END FUNCTION |