Optimize looping over the lower triangular in fat matrix cases

This commit is contained in:
Martin Kroeker
2026-04-21 10:53:22 +02:00
committed by GitHub
parent 09e8a7b317
commit 968119f2bb
12 changed files with 36 additions and 36 deletions
+1 -1
View File
@@ -134,7 +134,7 @@
20 CONTINUE
*
ELSE IF( LSAME( UPLO, 'L' ) ) THEN
DO 40 J = 1, N
DO 40 J = 1, MIN( M, N )
DO 30 I = J, M
B( I, J ) = A( I, J )
30 CONTINUE
+7 -7
View File
@@ -193,7 +193,7 @@
10 CONTINUE
20 CONTINUE
ELSE
DO 40 J = 1, N
DO 40 J = 1, MIN( M, N )
DO 30 I = J + 1, M
SUM = ABS( A( I, J ) )
IF( VALUE .LT. SUM .OR.
@@ -212,7 +212,7 @@
50 CONTINUE
60 CONTINUE
ELSE
DO 80 J = 1, N
DO 80 J = 1, MIN( M, N )
DO 70 I = J, M
SUM = ABS( A( I, J ) )
IF( VALUE .LT. SUM .OR.
@@ -243,7 +243,7 @@
IF( VALUE .LT. SUM .OR. SISNAN( SUM ) ) VALUE = SUM
110 CONTINUE
ELSE
DO 140 J = 1, N
DO 140 J = 1, MIN( M, N )
IF( UDIAG ) THEN
SUM = ONE
DO 120 I = J + 1, M
@@ -290,7 +290,7 @@
DO 220 I = N + 1, M
WORK( I ) = ZERO
220 CONTINUE
DO 240 J = 1, N
DO 240 J = 1, MIN( M, N )
DO 230 I = J + 1, M
WORK( I ) = WORK( I ) + ABS( A( I, J ) )
230 CONTINUE
@@ -299,7 +299,7 @@
DO 250 I = 1, M
WORK( I ) = ZERO
250 CONTINUE
DO 270 J = 1, N
DO 270 J = 1, MIN( M, N )
DO 260 I = J, M
WORK( I ) = WORK( I ) + ABS( A( I, J ) )
260 CONTINUE
@@ -336,14 +336,14 @@
IF( LSAME( DIAG, 'U' ) ) THEN
SCALE = ONE
SUM = REAL( MIN( M, N ) )
DO 310 J = 1, N
DO 310 J = 1, MIN( M, N )
CALL CLASSQ( M-J, A( MIN( M, J+1 ), J ), 1, SCALE,
$ SUM )
310 CONTINUE
ELSE
SCALE = ZERO
SUM = ONE
DO 320 J = 1, N
DO 320 J = 1, MIN( M, N )
CALL CLASSQ( M-J+1, A( J, J ), 1, SCALE, SUM )
320 CONTINUE
END IF
+1 -1
View File
@@ -291,7 +291,7 @@
*
* Lower triangular matrix
*
DO 50 J = 1, N
DO 50 J = 1, MIN( M, N )
DO 40 I = J, M
A( I, J ) = A( I, J )*MUL
40 CONTINUE
+1 -1
View File
@@ -133,7 +133,7 @@
10 CONTINUE
20 CONTINUE
ELSE IF( LSAME( UPLO, 'L' ) ) THEN
DO 40 J = 1, N
DO 40 J = 1, MIN( M, N )
DO 30 I = J, M
B( I, J ) = A( I, J )
30 CONTINUE
+7 -7
View File
@@ -191,7 +191,7 @@
10 CONTINUE
20 CONTINUE
ELSE
DO 40 J = 1, N
DO 40 J = 1, MIN( M, N )
DO 30 I = J + 1, M
SUM = ABS( A( I, J ) )
IF( VALUE .LT. SUM .OR.
@@ -210,7 +210,7 @@
50 CONTINUE
60 CONTINUE
ELSE
DO 80 J = 1, N
DO 80 J = 1, MIN( M, N )
DO 70 I = J, M
SUM = ABS( A( I, J ) )
IF( VALUE .LT. SUM .OR.
@@ -241,7 +241,7 @@
IF( VALUE .LT. SUM .OR. DISNAN( SUM ) ) VALUE = SUM
110 CONTINUE
ELSE
DO 140 J = 1, N
DO 140 J = 1, MIN( M, N )
IF( UDIAG ) THEN
SUM = ONE
DO 120 I = J + 1, M
@@ -288,7 +288,7 @@
DO 220 I = N + 1, M
WORK( I ) = ZERO
220 CONTINUE
DO 240 J = 1, N
DO 240 J = 1, MIN (M, N )
DO 230 I = J + 1, M
WORK( I ) = WORK( I ) + ABS( A( I, J ) )
230 CONTINUE
@@ -297,7 +297,7 @@
DO 250 I = 1, M
WORK( I ) = ZERO
250 CONTINUE
DO 270 J = 1, N
DO 270 J = 1, MIN( M, N )
DO 260 I = J, M
WORK( I ) = WORK( I ) + ABS( A( I, J ) )
260 CONTINUE
@@ -334,14 +334,14 @@
IF( LSAME( DIAG, 'U' ) ) THEN
SCALE = ONE
SUM = MIN( M, N )
DO 310 J = 1, N
DO 310 J = 1, MIN( M, N )
CALL DLASSQ( M-J, A( MIN( M, J+1 ), J ), 1, SCALE,
$ SUM )
310 CONTINUE
ELSE
SCALE = ZERO
SUM = ONE
DO 320 J = 1, N
DO 320 J = 1, MIN( M, N )
CALL DLASSQ( M-J+1, A( J, J ), 1, SCALE, SUM )
320 CONTINUE
END IF
+1 -1
View File
@@ -291,7 +291,7 @@
*
* Lower triangular matrix
*
DO 50 J = 1, N
DO 50 J = 1, MIN( M, N )
DO 40 I = J, M
A( I, J ) = A( I, J )*MUL
40 CONTINUE
+1 -1
View File
@@ -133,7 +133,7 @@
10 CONTINUE
20 CONTINUE
ELSE IF( LSAME( UPLO, 'L' ) ) THEN
DO 40 J = 1, N
DO 40 J = 1, MIN( M, N )
DO 30 I = J, M
B( I, J ) = A( I, J )
30 CONTINUE
+7 -7
View File
@@ -191,7 +191,7 @@
10 CONTINUE
20 CONTINUE
ELSE
DO 40 J = 1, N
DO 40 J = 1, MIN( M, N )
DO 30 I = J + 1, M
SUM = ABS( A( I, J ) )
IF( VALUE .LT. SUM .OR.
@@ -210,7 +210,7 @@
50 CONTINUE
60 CONTINUE
ELSE
DO 80 J = 1, N
DO 80 J = 1, MIN( M, N )
DO 70 I = J, M
SUM = ABS( A( I, J ) )
IF( VALUE .LT. SUM .OR.
@@ -241,7 +241,7 @@
IF( VALUE .LT. SUM .OR. SISNAN( SUM ) ) VALUE = SUM
110 CONTINUE
ELSE
DO 140 J = 1, N
DO 140 J = 1, MIN( M, N )
IF( UDIAG ) THEN
SUM = ONE
DO 120 I = J + 1, M
@@ -288,7 +288,7 @@
DO 220 I = N + 1, M
WORK( I ) = ZERO
220 CONTINUE
DO 240 J = 1, N
DO 240 J = 1, MIN( M, N )
DO 230 I = J + 1, M
WORK( I ) = WORK( I ) + ABS( A( I, J ) )
230 CONTINUE
@@ -297,7 +297,7 @@
DO 250 I = 1, M
WORK( I ) = ZERO
250 CONTINUE
DO 270 J = 1, N
DO 270 J = 1, MIN( M, N )
DO 260 I = J, M
WORK( I ) = WORK( I ) + ABS( A( I, J ) )
260 CONTINUE
@@ -334,14 +334,14 @@
IF( LSAME( DIAG, 'U' ) ) THEN
SCALE = ONE
SUM = REAL( MIN( M, N ) )
DO 310 J = 1, N
DO 310 J = 1, MIN ( M, N )
CALL SLASSQ( M-J, A( MIN( M, J+1 ), J ), 1, SCALE,
$ SUM )
310 CONTINUE
ELSE
SCALE = ZERO
SUM = ONE
DO 320 J = 1, N
DO 320 J = 1, MIN( M, N )
CALL SLASSQ( M-J+1, A( J, J ), 1, SCALE, SUM )
320 CONTINUE
END IF
+1 -1
View File
@@ -291,7 +291,7 @@
*
* Lower triangular matrix
*
DO 50 J = 1, N
DO 50 J = 1, MIN( M, N )
DO 40 I = J, M
A( I, J ) = A( I, J )*MUL
40 CONTINUE
+1 -1
View File
@@ -134,7 +134,7 @@
20 CONTINUE
*
ELSE IF( LSAME( UPLO, 'L' ) ) THEN
DO 40 J = 1, N
DO 40 J = 1, MIN( M, N )
DO 30 I = J, M
B( I, J ) = A( I, J )
30 CONTINUE
+7 -7
View File
@@ -193,7 +193,7 @@
10 CONTINUE
20 CONTINUE
ELSE
DO 40 J = 1, N
DO 40 J = 1, MIN( M, N )
DO 30 I = J + 1, M
SUM = ABS( A( I, J ) )
IF( VALUE .LT. SUM .OR.
@@ -212,7 +212,7 @@
50 CONTINUE
60 CONTINUE
ELSE
DO 80 J = 1, N
DO 80 J = 1, MIN( M, N )
DO 70 I = J, M
SUM = ABS( A( I, J ) )
IF( VALUE .LT. SUM .OR.
@@ -243,7 +243,7 @@
IF( VALUE .LT. SUM .OR. DISNAN( SUM ) ) VALUE = SUM
110 CONTINUE
ELSE
DO 140 J = 1, N
DO 140 J = 1, MIN( M, N )
IF( UDIAG ) THEN
SUM = ONE
DO 120 I = J + 1, M
@@ -290,7 +290,7 @@
DO 220 I = N + 1, M
WORK( I ) = ZERO
220 CONTINUE
DO 240 J = 1, N
DO 240 J = 1, MIN( M, N )
DO 230 I = J + 1, M
WORK( I ) = WORK( I ) + ABS( A( I, J ) )
230 CONTINUE
@@ -299,7 +299,7 @@
DO 250 I = 1, M
WORK( I ) = ZERO
250 CONTINUE
DO 270 J = 1, N
DO 270 J = 1, MIN( M, N )
DO 260 I = J, M
WORK( I ) = WORK( I ) + ABS( A( I, J ) )
260 CONTINUE
@@ -336,14 +336,14 @@
IF( LSAME( DIAG, 'U' ) ) THEN
SCALE = ONE
SUM = MIN( M, N )
DO 310 J = 1, N
DO 310 J = 1, MIN( M, N )
CALL ZLASSQ( M-J, A( MIN( M, J+1 ), J ), 1, SCALE,
$ SUM )
310 CONTINUE
ELSE
SCALE = ZERO
SUM = ONE
DO 320 J = 1, N
DO 320 J = 1, MIN( M, N )
CALL ZLASSQ( M-J+1, A( J, J ), 1, SCALE, SUM )
320 CONTINUE
END IF
+1 -1
View File
@@ -291,7 +291,7 @@
*
* Lower triangular matrix
*
DO 50 J = 1, N
DO 50 J = 1, MIN( M, N )
DO 40 I = J, M
A( I, J ) = A( I, J )*MUL
40 CONTINUE