1) Je viens de modifier le fichier timer_dsytri2.c de telle sorte a ce qu'il
authorlangou <langou@users.noreply.github.com>
Wed, 26 Jan 2011 14:02:05 +0000 (14:02 +0000)
committerlangou <langou@users.noreply.github.com>
Wed, 26 Jan 2011 14:02:05 +0000 (14:02 +0000)
traite les matrices avec des lda.
Exemple:

> gfortran timer_dsytri2.c /Users/langou/Documents/lapack-dev-trunk.svn/lapack_LINUX.a -framework vecLib
> ./a.out -U -lda 1079 -n 100
DSYTRI2 info=0, check=1.891597e-14
Dispo dans ldlt.git. Marche bien. Upper ou Lower. LDA different de N ou pas. Le
check est
|| A . inv(A) - I || / || A ||
(Je pense que il faut diviser par || A || * || inv(A) ||, pas tres important.)

2) Du coup, dans ce commit, je rectifie tous les codes. Cela compile. Je n'ai
pas verifie les testings. Je n'ai pas ecrit de driver pour verifier. (Le driver
n'est que pour la version DOUBLE.)

JL

SRC/cheswapr.f
SRC/chetri2x.f
SRC/csyswapr.f
SRC/csytri2x.f
SRC/ssyswapr.f
SRC/ssytri2x.f
SRC/zheswapr.f
SRC/zhetri2x.f
SRC/zsyswapr.f
SRC/zsytri2x.f

index 3bb2c22634f3d00f9b3e828064bd5739872ccc60..ad54f48781280a39e3ab2f095761cfd0c3fe46c8 100644 (file)
@@ -1,4 +1,4 @@
-      SUBROUTINE CHESWAPR( UPLO, N, A, I1, I2)
+      SUBROUTINE CHESWAPR( UPLO, N, A, LDA, I1, I2)
 *
 *  -- LAPACK auxiliary routine (version 3.3.0) --
 *  -- LAPACK is a software package provided by Univ. of Tennessee,    --
@@ -7,10 +7,10 @@
 *
 *     .. Scalar Arguments ..
       CHARACTER        UPLO
-      INTEGER          I1, I2, N
+      INTEGER          I1, I2, LDA, N
 *     ..
 *     .. Array Arguments ..
-      COMPLEX          A(N,N)
+      COMPLEX          A( LDA, N )
 *
 *  Purpose
 *  =======
@@ -41,6 +41,9 @@
 *          inverse is formed and the part of A above the diagonal is
 *          not referenced.
 *
+*  LDA     (input) INTEGER
+*          The leading dimension of the array A.  LDA >= max(1,N).
+*
 *  I1      (input) INTEGER
 *          Index of the first row to swap
 *
 *         LOWER
 *         first swap
 *          - swap row I1 and I2 from 1 to I1-1 
-         CALL CSWAP ( I1-1, A(I1,1), N, A(I2,1), N )
+         CALL CSWAP ( I1-1, A(I1,1), LDA, A(I2,1), LDA )
 *
 *         second swap :
 *          - swap A(I1,I1) and A(I2,I2)
index 9169906099fdd6b4f35a4069b684d1b5512f2a71..566fede4918269445e67d842ad31d171b6db349e 100644 (file)
             DO WHILE ( I .LE. N )
                IF( IPIV(I) .GT. 0 ) THEN
                   IP=IPIV(I)
-                 IF (I .LT. IP) CALL CHESWAPR( UPLO, N, A, I ,IP )
-                 IF (I .GT. IP) CALL CHESWAPR( UPLO, N, A, IP ,I )
+                 IF (I .LT. IP) CALL CHESWAPR( UPLO, N, A, LDA, I ,IP )
+                 IF (I .GT. IP) CALL CHESWAPR( UPLO, N, A, LDA, IP ,I )
                ELSE
                  IP=-IPIV(I)
                  I=I+1
                  IF ( (I-1) .LT. IP) 
-     $                  CALL CHESWAPR( UPLO, N, A, I-1 ,IP )
+     $                  CALL CHESWAPR( UPLO, N, A, LDA, I-1 ,IP )
                  IF ( (I-1) .GT. IP) 
-     $                  CALL CHESWAPR( UPLO, N, A, IP ,I-1 )
+     $                  CALL CHESWAPR( UPLO, N, A, LDA, IP ,I-1 )
               ENDIF
                I=I+1
             END DO
             DO WHILE ( I .GE. 1 )
                IF( IPIV(I) .GT. 0 ) THEN
                   IP=IPIV(I)
-                 IF (I .LT. IP) CALL CHESWAPR( UPLO, N, A, I ,IP  )
-                 IF (I .GT. IP) CALL CHESWAPR( UPLO, N, A, IP ,I )
+                 IF (I .LT. IP) CALL CHESWAPR( UPLO, N, A, LDA, I ,IP  )
+                 IF (I .GT. IP) CALL CHESWAPR( UPLO, N, A, LDA, IP ,I )
                ELSE
                  IP=-IPIV(I)
-                 IF ( I .LT. IP) CALL CHESWAPR( UPLO, N, A, I ,IP )
-                 IF ( I .GT. IP) CALL CHESWAPR(  UPLO, N, A, IP ,I )
+                 IF ( I .LT. IP) CALL CHESWAPR( UPLO, N, A, LDA, I ,IP )
+                 IF ( I .GT. IP) CALL CHESWAPR( UPLO, N, A, LDA, IP ,I )
                  I=I-1
                ENDIF
                I=I-1
index 05c477525eb3e1debf6cd082749149768d608220..31a04fe2122c757bfd6333a614890d28b3c30869 100644 (file)
@@ -1,4 +1,4 @@
-      SUBROUTINE CSYSWAPR( UPLO, N, A, I1, I2)
+      SUBROUTINE CSYSWAPR( UPLO, N, A, LDA, I1, I2)
 *
 *  -- LAPACK auxiliary routine (version 3.3.0) --
 *  -- LAPACK is a software package provided by Univ. of Tennessee,    --
@@ -7,10 +7,10 @@
 *
 *     .. Scalar Arguments ..
       CHARACTER        UPLO
-      INTEGER          I1, I2, N
+      INTEGER          I1, I2, LDA, N
 *     ..
 *     .. Array Arguments ..
-      COMPLEX          A(N,N)
+      COMPLEX          A( LDA, N )
 *
 *  Purpose
 *  =======
@@ -41,6 +41,9 @@
 *          inverse is formed and the part of A above the diagonal is
 *          not referenced.
 *
+*  LDA     (input) INTEGER
+*          The leading dimension of the array A.  LDA >= max(1,N).
+*
 *  I1      (input) INTEGER
 *          Index of the first row to swap
 *
 *         LOWER
 *         first swap
 *          - swap row I1 and I2 from I1 to I1-1 
-         CALL CSWAP ( I1-1, A(I1,1), N, A(I2,1), N )
+         CALL CSWAP ( I1-1, A(I1,1), LDA, A(I2,1), LDA )
 *
 *         second swap :
 *          - swap A(I1,I1) and A(I2,I2)
index d89d9fd6dc54fcaf6f901d5feaab37d23a882326..5812e6d14b8fe4519d32f3726f27281428df4abd 100644 (file)
             DO WHILE ( I .LE. N )
                IF( IPIV(I) .GT. 0 ) THEN
                   IP=IPIV(I)
-                 IF (I .LT. IP) CALL CSYSWAPR( UPLO, N, A, I ,IP )
-                 IF (I .GT. IP) CALL CSYSWAPR( UPLO, N, A, IP ,I )
+                 IF (I .LT. IP) CALL CSYSWAPR( UPLO, N, A, LDA, I ,IP )
+                 IF (I .GT. IP) CALL CSYSWAPR( UPLO, N, A, LDA, IP ,I )
                ELSE
                  IP=-IPIV(I)
                  I=I+1
                  IF ( (I-1) .LT. IP) 
-     $                  CALL CSYSWAPR( UPLO, N, A, I-1 ,IP )
+     $                  CALL CSYSWAPR( UPLO, N, A, LDA, I-1 ,IP )
                  IF ( (I-1) .GT. IP) 
-     $                  CALL CSYSWAPR( UPLO, N, A, IP ,I-1 )
+     $                  CALL CSYSWAPR( UPLO, N, A, LDA, IP ,I-1 )
               ENDIF
                I=I+1
             END DO
             DO WHILE ( I .GE. 1 )
                IF( IPIV(I) .GT. 0 ) THEN
                   IP=IPIV(I)
-                 IF (I .LT. IP) CALL CSYSWAPR( UPLO, N, A, I ,IP  )
-                 IF (I .GT. IP) CALL CSYSWAPR( UPLO, N, A, IP ,I )
+                 IF (I .LT. IP) CALL CSYSWAPR( UPLO, N, A, LDA, I ,IP  )
+                 IF (I .GT. IP) CALL CSYSWAPR( UPLO, N, A, LDA, IP ,I )
                ELSE
                  IP=-IPIV(I)
-                 IF ( I .LT. IP) CALL CSYSWAPR( UPLO, N, A, I ,IP )
-                 IF ( I .GT. IP) CALL CSYSWAPR(  UPLO, N, A, IP ,I )
+                 IF ( I .LT. IP) CALL CSYSWAPR( UPLO, N, A, LDA, I ,IP )
+                 IF ( I .GT. IP) CALL CSYSWAPR( UPLO, N, A, LDA, IP ,I )
                  I=I-1
                ENDIF
                I=I-1
index 7e5ab0d5cca8b4a7b1d5eedb85587743ecefe7e7..0100e5b836ee5b1e9acc8318fbffab6c35207162 100644 (file)
@@ -1,4 +1,4 @@
-      SUBROUTINE SSYSWAPR( UPLO, N, A, I1, I2)
+      SUBROUTINE SSYSWAPR( UPLO, N, A, LDA, I1, I2)
 *
 *  -- LAPACK auxiliary routine (version 3.3.0) --
 *  -- LAPACK is a software package provided by Univ. of Tennessee,    --
@@ -7,10 +7,10 @@
 *
 *     .. Scalar Arguments ..
       CHARACTER        UPLO
-      INTEGER          I1, I2, N
+      INTEGER          I1, I2, LDA, N
 *     ..
 *     .. Array Arguments ..
-      REAL             A(N,N)
+      REAL             A( LDA, N )
 *
 *  Purpose
 *  =======
@@ -41,6 +41,9 @@
 *          inverse is formed and the part of A above the diagonal is
 *          not referenced.
 *
+*  LDA     (input) INTEGER
+*          The leading dimension of the array A.  LDA >= max(1,N).
+*
 *  I1      (input) INTEGER
 *          Index of the first row to swap
 *
 *         LOWER
 *         first swap
 *          - swap row I1 and I2 from I1 to I1-1 
-         CALL SSWAP( I1-1, A(I1,1), N, A(I2,1), N )
+         CALL SSWAP( I1-1, A(I1,1), LDA, A(I2,1), LDA )
 *
 *         second swap :
 *          - swap A(I1,I1) and A(I2,I2)
index f628aa824bed3a07e594024a6536fb4a02511475..29168dbad07accaa905f0a59f666603dc1b2225d 100644 (file)
             DO WHILE ( I .LE. N )
                IF( IPIV(I) .GT. 0 ) THEN
                   IP=IPIV(I)
-                 IF (I .LT. IP) CALL SSYSWAPR( UPLO, N, A, I ,IP )
-                 IF (I .GT. IP) CALL SSYSWAPR( UPLO, N, A, IP ,I )
+                 IF (I .LT. IP) CALL SSYSWAPR( UPLO, N, A, LDA, I ,IP )
+                 IF (I .GT. IP) CALL SSYSWAPR( UPLO, N, A, LDA, IP ,I )
                ELSE
                  IP=-IPIV(I)
                  I=I+1
                  IF ( (I-1) .LT. IP) 
-     $                  CALL SSYSWAPR( UPLO, N, A, I-1 ,IP )
+     $                  CALL SSYSWAPR( UPLO, N, A, LDA, I-1 ,IP )
                  IF ( (I-1) .GT. IP) 
-     $                  CALL SSYSWAPR( UPLO, N, A, IP ,I-1 )
+     $                  CALL SSYSWAPR( UPLO, N, A, LDA, IP ,I-1 )
               ENDIF
                I=I+1
             END DO
             DO WHILE ( I .GE. 1 )
                IF( IPIV(I) .GT. 0 ) THEN
                   IP=IPIV(I)
-                 IF (I .LT. IP) CALL SSYSWAPR( UPLO, N, A, I ,IP  )
-                 IF (I .GT. IP) CALL SSYSWAPR( UPLO, N, A, IP ,I )
+                 IF (I .LT. IP) CALL SSYSWAPR( UPLO, N, A, LDA, I ,IP  )
+                 IF (I .GT. IP) CALL SSYSWAPR( UPLO, N, A, LDA, IP ,I )
                ELSE
                  IP=-IPIV(I)
-                 IF ( I .LT. IP) CALL SSYSWAPR( UPLO, N, A, I ,IP )
-                 IF ( I .GT. IP) CALL SSYSWAPR(  UPLO, N, A, IP ,I )
+                 IF ( I .LT. IP) CALL SSYSWAPR( UPLO, N, A, LDA, I ,IP )
+                 IF ( I .GT. IP) CALL SSYSWAPR( UPLO, N, A, LDA, IP ,I )
                  I=I-1
                ENDIF
                I=I-1
index 0cead40189144e0ec40c8b8d444d865717dc4e3e..11c726cbb5d404f692c5ede4c7ab8b2d0d6f8949 100644 (file)
@@ -1,4 +1,4 @@
-      SUBROUTINE ZHESWAPR( UPLO, N, A, I1, I2)
+      SUBROUTINE ZHESWAPR( UPLO, N, A, LDA, I1, I2)
 *
 *  -- LAPACK auxiliary routine (version 3.3.0) --
 *  -- LAPACK is a software package provided by Univ. of Tennessee,    --
@@ -7,10 +7,10 @@
 *
 *     .. Scalar Arguments ..
       CHARACTER        UPLO
-      INTEGER          I1, I2, N
+      INTEGER          I1, I2, LDA, N
 *     ..
 *     .. Array Arguments ..
-      COMPLEX*16          A(N,N)
+      COMPLEX*16          A( LDA, N )
 *
 *  Purpose
 *  =======
@@ -41,6 +41,9 @@
 *          inverse is formed and the part of A above the diagonal is
 *          not referenced.
 *
+*  LDA     (input) INTEGER
+*          The leading dimension of the array A.  LDA >= max(1,N).
+*
 *  I1      (input) INTEGER
 *          Index of the first row to swap
 *
 *         LOWER
 *         first swap
 *          - swap row I1 and I2 from 1 to I1-1 
-         CALL ZSWAP ( I1-1, A(I1,1), N, A(I2,1), N )
+         CALL ZSWAP ( I1-1, A(I1,1), LDA, A(I2,1), LDA )
 *
 *         second swap :
 *          - swap A(I1,I1) and A(I2,I2)
index 0d3f489ef32425db73eab6d2f14e02e57197e108..481ff6f0698a5d5a881908da5c211d24c76e8f5c 100644 (file)
             DO WHILE ( I .LE. N )
                IF( IPIV(I) .GT. 0 ) THEN
                   IP=IPIV(I)
-                 IF (I .LT. IP) CALL ZHESWAPR( UPLO, N, A, I ,IP )
-                 IF (I .GT. IP) CALL ZHESWAPR( UPLO, N, A, IP ,I )
+                 IF (I .LT. IP) CALL ZHESWAPR( UPLO, N, A, LDA, I ,IP )
+                 IF (I .GT. IP) CALL ZHESWAPR( UPLO, N, A, LDA, IP ,I )
                ELSE
                  IP=-IPIV(I)
                  I=I+1
                  IF ( (I-1) .LT. IP) 
-     $                  CALL ZHESWAPR( UPLO, N, A, I-1 ,IP )
+     $                  CALL ZHESWAPR( UPLO, N, A, LDA, I-1 ,IP )
                  IF ( (I-1) .GT. IP) 
-     $                  CALL ZHESWAPR( UPLO, N, A, IP ,I-1 )
+     $                  CALL ZHESWAPR( UPLO, N, A, LDA, IP ,I-1 )
               ENDIF
                I=I+1
             END DO
             DO WHILE ( I .GE. 1 )
                IF( IPIV(I) .GT. 0 ) THEN
                   IP=IPIV(I)
-                 IF (I .LT. IP) CALL ZHESWAPR( UPLO, N, A, I ,IP  )
-                 IF (I .GT. IP) CALL ZHESWAPR( UPLO, N, A, IP ,I )
+                 IF (I .LT. IP) CALL ZHESWAPR( UPLO, N, A, LDA, I ,IP  )
+                 IF (I .GT. IP) CALL ZHESWAPR( UPLO, N, A, LDA, IP ,I )
                ELSE
                  IP=-IPIV(I)
-                 IF ( I .LT. IP) CALL ZHESWAPR( UPLO, N, A, I ,IP )
-                 IF ( I .GT. IP) CALL ZHESWAPR(  UPLO, N, A, IP ,I )
+                 IF ( I .LT. IP) CALL ZHESWAPR( UPLO, N, A, LDA, I ,IP )
+                 IF ( I .GT. IP) CALL ZHESWAPR( UPLO, N, A, LDA, IP ,I )
                  I=I-1
                ENDIF
                I=I-1
index 64b0807b052a6736464f5630ef36e16f4042d793..ffc6d59ec6c4497bfee0ba308dbcb561396b066c 100644 (file)
@@ -1,4 +1,4 @@
-      SUBROUTINE ZSYSWAPR( UPLO, N, A, I1, I2)
+      SUBROUTINE ZSYSWAPR( UPLO, N, A, LDA, I1, I2)
 *
 *  -- LAPACK auxiliary routine (version 3.3.0) --
 *  -- LAPACK is a software package provided by Univ. of Tennessee,    --
@@ -7,10 +7,10 @@
 *
 *     .. Scalar Arguments ..
       CHARACTER        UPLO
-      INTEGER          I1, I2, N
+      INTEGER          I1, I2, LDA, N
 *     ..
 *     .. Array Arguments ..
-      DOUBLE COMPLEX   A(N,N)
+      DOUBLE COMPLEX   A( LDA, N )
 *
 *  Purpose
 *  =======
@@ -41,6 +41,9 @@
 *          inverse is formed and the part of A above the diagonal is
 *          not referenced.
 *
+*  LDA     (input) INTEGER
+*          The leading dimension of the array A.  LDA >= max(1,N).
+*
 *  I1      (input) INTEGER
 *          Index of the first row to swap
 *
 *         LOWER
 *         first swap
 *          - swap row I1 and I2 from I1 to I1-1 
-         CALL ZSWAP( I1-1, A(I1,1), N, A(I2,1), N )
+         CALL ZSWAP( I1-1, A(I1,1), LDA, A(I2,1), LDA )
 *
 *         second swap :
 *          - swap A(I1,I1) and A(I2,I2)
index f7e4b7f9e0b6d36d426d775e943cb2ac938e9b81..93e23d54f16822eebafc587a3e1349277ff5c53d 100644 (file)
             DO WHILE ( I .LE. N )
                IF( IPIV(I) .GT. 0 ) THEN
                   IP=IPIV(I)
-                 IF (I .LT. IP) CALL ZSYSWAPR( UPLO, N, A, I ,IP )
-                 IF (I .GT. IP) CALL ZSYSWAPR( UPLO, N, A, IP ,I )
+                 IF (I .LT. IP) CALL ZSYSWAPR( UPLO, N, A, LDA, I ,IP )
+                 IF (I .GT. IP) CALL ZSYSWAPR( UPLO, N, A, LDA, IP ,I )
                ELSE
                  IP=-IPIV(I)
                  I=I+1
                  IF ( (I-1) .LT. IP) 
-     $                  CALL ZSYSWAPR( UPLO, N, A, I-1 ,IP )
+     $                  CALL ZSYSWAPR( UPLO, N, A, LDA, I-1 ,IP )
                  IF ( (I-1) .GT. IP) 
-     $                  CALL ZSYSWAPR( UPLO, N, A, IP ,I-1 )
+     $                  CALL ZSYSWAPR( UPLO, N, A, LDA, IP ,I-1 )
               ENDIF
                I=I+1
             END DO
             DO WHILE ( I .GE. 1 )
                IF( IPIV(I) .GT. 0 ) THEN
                   IP=IPIV(I)
-                 IF (I .LT. IP) CALL ZSYSWAPR( UPLO, N, A, I ,IP  )
-                 IF (I .GT. IP) CALL ZSYSWAPR( UPLO, N, A, IP ,I )
+                 IF (I .LT. IP) CALL ZSYSWAPR( UPLO, N, A, LDA, I ,IP  )
+                 IF (I .GT. IP) CALL ZSYSWAPR( UPLO, N, A, LDA, IP ,I )
                ELSE
                  IP=-IPIV(I)
-                 IF ( I .LT. IP) CALL ZSYSWAPR( UPLO, N, A, I ,IP )
-                 IF ( I .GT. IP) CALL ZSYSWAPR(  UPLO, N, A, IP ,I )
+                 IF ( I .LT. IP) CALL ZSYSWAPR( UPLO, N, A, LDA, I ,IP )
+                 IF ( I .GT. IP) CALL ZSYSWAPR( UPLO, N, A, LDA, IP ,I )
                  I=I-1
                ENDIF
                I=I-1