aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjulie <julielangou@users.noreply.github.com>2016-01-19 04:37:26 +0000
committerjulie <julielangou@users.noreply.github.com>2016-01-19 04:37:26 +0000
commit50dacaf659e6894dd5adbcfa379cce7352e9baf2 (patch)
tree85f6475ac2a913a18ba177367e088eb8d9b72899
parent43e85a37b9b765a6473df7c1334888d21a796d45 (diff)
Commit interface inconsistencies fix proposed by David Vowles on Jan 18th 2016 - sent directly to Julie
Confirmed by Julie on Jan 18th 2016 Routines: [cz]unbdb[1234].f, [SD]ORBDB[1234].f == First Email from David == I have encountered some additional errors when compiling Lapack v3.6.0 with Compaq Visual Fortran. Interestingly, these errors did not occur when compiling with Intel Visual Fortran. File: “SRC\cunbdb1.f” Lines: 310-312 C = SQRT( SCNRM2( P-I, X11(I+1,I+1), 1, X11(I+1,I+1), $ 1 )**2 + SCNRM2( M-P-I, X21(I+1,I+1), 1, X21(I+1,I+1), $ 1 )**2 ) The interface to the BLAS SCNRM2 function is SCNRM2(N,X,INCR) whereas the interfaces to the SCNRM2 function calls in “SRC\cunbdb1.f” are of the form SCNRM2(N, X1, INC1, X2, INC2). Similar interface inconsistencies are found in the following files: File: “SRC\cunbdb2.f” Lines: 299-300 File: “SRC\cunbdb3.f” Lines: 299-300 File: “SRC\cunbdb4.f” Lines: 347-349 The above inconsistencies between the interface of the function definition and the function call causes compilation failure of the test-function “xeigtstc.exe” It is unclear if function calls of the form SCNRM2(N, X1, INC1, X2, INC2) should be replaced by SCNRM2(N, X1, INC1) or if some other correction is required. == Second Email from David: == By the way, I found similar interface inconsistencies in the SRC\cunbdb<n>.f subroutines for <n> = 1 to 4; and in the SRC\<t>ORBDB<n>.f subroutines for <t> = D and S and <n> = 1 to 4. A total of 16 subroutines are affected – the four mentioned in my previous email and the twelve mentioned here. After changing the calls in the affected files from *NRM2(N,X1,INC1,X2,INC2) to *NRM2(N,X1,INC1) my build for Windows x86 with Compaq Visual Fortran (CVF) completed successfully and all tests passed. But I do await your verdict as to whether the proposed modification to the function calls is correct. If I understand correctly STDCALL is the default calling mechanism for the CVF compiler whereas for the (Intel Visual Fortran) IVF compiler it is the C calling convention. I wonder if this difference in calling convention explains why the affected test programs compile and link with IVF but fail to link with CVF.
-rw-r--r--SRC/cunbdb1.f5
-rw-r--r--SRC/cunbdb2.f4
-rw-r--r--SRC/cunbdb3.f4
-rw-r--r--SRC/cunbdb4.f5
-rw-r--r--SRC/dorbdb1.f5
-rw-r--r--SRC/dorbdb2.f4
-rw-r--r--SRC/dorbdb3.f4
-rw-r--r--SRC/dorbdb4.f5
-rw-r--r--SRC/sorbdb1.f5
-rw-r--r--SRC/sorbdb2.f4
-rw-r--r--SRC/sorbdb3.f4
-rw-r--r--SRC/sorbdb4.f5
-rw-r--r--SRC/zunbdb1.f5
-rw-r--r--SRC/zunbdb2.f4
-rw-r--r--SRC/zunbdb3.f4
-rw-r--r--SRC/zunbdb4.f5
16 files changed, 32 insertions, 40 deletions
diff --git a/SRC/cunbdb1.f b/SRC/cunbdb1.f
index fea26b21..70b7515c 100644
--- a/SRC/cunbdb1.f
+++ b/SRC/cunbdb1.f
@@ -307,9 +307,8 @@
CALL CLARF( 'R', M-P-I, Q-I, X21(I,I+1), LDX21, TAUQ1(I),
$ X21(I+1,I+1), LDX21, WORK(ILARF) )
CALL CLACGV( Q-I, X21(I,I+1), LDX21 )
- C = SQRT( SCNRM2( P-I, X11(I+1,I+1), 1, X11(I+1,I+1),
- $ 1 )**2 + SCNRM2( M-P-I, X21(I+1,I+1), 1, X21(I+1,I+1),
- $ 1 )**2 )
+ C = SQRT( SCNRM2( P-I, X11(I+1,I+1), 1 )**2
+ $ + SCNRM2( M-P-I, X21(I+1,I+1), 1 )**2 )
PHI(I) = ATAN2( S, C )
CALL CUNBDB5( P-I, M-P-I, Q-I-1, X11(I+1,I+1), 1,
$ X21(I+1,I+1), 1, X11(I+1,I+2), LDX11,
diff --git a/SRC/cunbdb2.f b/SRC/cunbdb2.f
index cec00f93..2d186198 100644
--- a/SRC/cunbdb2.f
+++ b/SRC/cunbdb2.f
@@ -296,8 +296,8 @@
CALL CLARF( 'R', M-P-I+1, Q-I+1, X11(I,I), LDX11, TAUQ1(I),
$ X21(I,I), LDX21, WORK(ILARF) )
CALL CLACGV( Q-I+1, X11(I,I), LDX11 )
- S = SQRT( SCNRM2( P-I, X11(I+1,I), 1, X11(I+1,I),
- $ 1 )**2 + SCNRM2( M-P-I+1, X21(I,I), 1, X21(I,I), 1 )**2 )
+ S = SQRT( SCNRM2( P-I, X11(I+1,I), 1 )**2
+ $ + SCNRM2( M-P-I+1, X21(I,I), 1 )**2 )
THETA(I) = ATAN2( S, C )
*
CALL CUNBDB5( P-I, M-P-I+1, Q-I, X11(I+1,I), 1, X21(I,I), 1,
diff --git a/SRC/cunbdb3.f b/SRC/cunbdb3.f
index 5451ef00..b508795a 100644
--- a/SRC/cunbdb3.f
+++ b/SRC/cunbdb3.f
@@ -296,8 +296,8 @@
CALL CLARF( 'R', M-P-I, Q-I+1, X21(I,I), LDX21, TAUQ1(I),
$ X21(I+1,I), LDX21, WORK(ILARF) )
CALL CLACGV( Q-I+1, X21(I,I), LDX21 )
- C = SQRT( SCNRM2( P-I+1, X11(I,I), 1, X11(I,I),
- $ 1 )**2 + SCNRM2( M-P-I, X21(I+1,I), 1, X21(I+1,I), 1 )**2 )
+ C = SQRT( SCNRM2( P-I+1, X11(I,I), 1 )**2
+ $ + SCNRM2( M-P-I, X21(I+1,I), 1 )**2 )
THETA(I) = ATAN2( S, C )
*
CALL CUNBDB5( P-I+1, M-P-I, Q-I, X11(I,I), 1, X21(I+1,I), 1,
diff --git a/SRC/cunbdb4.f b/SRC/cunbdb4.f
index bc948a30..f97a8507 100644
--- a/SRC/cunbdb4.f
+++ b/SRC/cunbdb4.f
@@ -344,9 +344,8 @@
$ X21(I+1,I), LDX21, WORK(ILARF) )
CALL CLACGV( Q-I+1, X21(I,I), LDX21 )
IF( I .LT. M-Q ) THEN
- S = SQRT( SCNRM2( P-I, X11(I+1,I), 1, X11(I+1,I),
- $ 1 )**2 + SCNRM2( M-P-I, X21(I+1,I), 1, X21(I+1,I),
- $ 1 )**2 )
+ S = SQRT( SCNRM2( P-I, X11(I+1,I), 1 )**2
+ $ + SCNRM2( M-P-I, X21(I+1,I), 1 )**2
PHI(I) = ATAN2( S, C )
END IF
*
diff --git a/SRC/dorbdb1.f b/SRC/dorbdb1.f
index b5675f71..0d5e8a97 100644
--- a/SRC/dorbdb1.f
+++ b/SRC/dorbdb1.f
@@ -304,9 +304,8 @@
$ X11(I+1,I+1), LDX11, WORK(ILARF) )
CALL DLARF( 'R', M-P-I, Q-I, X21(I,I+1), LDX21, TAUQ1(I),
$ X21(I+1,I+1), LDX21, WORK(ILARF) )
- C = SQRT( DNRM2( P-I, X11(I+1,I+1), 1, X11(I+1,I+1),
- $ 1 )**2 + DNRM2( M-P-I, X21(I+1,I+1), 1, X21(I+1,I+1),
- $ 1 )**2 )
+ C = SQRT( DNRM2( P-I, X11(I+1,I+1), 1 )**2
+ $ + DNRM2( M-P-I, X21(I+1,I+1), 1 )**2 )
PHI(I) = ATAN2( S, C )
CALL DORBDB5( P-I, M-P-I, Q-I-1, X11(I+1,I+1), 1,
$ X21(I+1,I+1), 1, X11(I+1,I+2), LDX11,
diff --git a/SRC/dorbdb2.f b/SRC/dorbdb2.f
index 3cf82cf4..cc53cbe5 100644
--- a/SRC/dorbdb2.f
+++ b/SRC/dorbdb2.f
@@ -292,8 +292,8 @@
$ X11(I+1,I), LDX11, WORK(ILARF) )
CALL DLARF( 'R', M-P-I+1, Q-I+1, X11(I,I), LDX11, TAUQ1(I),
$ X21(I,I), LDX21, WORK(ILARF) )
- S = SQRT( DNRM2( P-I, X11(I+1,I), 1, X11(I+1,I),
- $ 1 )**2 + DNRM2( M-P-I+1, X21(I,I), 1, X21(I,I), 1 )**2 )
+ S = SQRT( DNRM2( P-I, X11(I+1,I), 1 )**2
+ $ + DNRM2( M-P-I+1, X21(I,I), 1 )**2 )
THETA(I) = ATAN2( S, C )
*
CALL DORBDB5( P-I, M-P-I+1, Q-I, X11(I+1,I), 1, X21(I,I), 1,
diff --git a/SRC/dorbdb3.f b/SRC/dorbdb3.f
index 03be504f..5d6c0083 100644
--- a/SRC/dorbdb3.f
+++ b/SRC/dorbdb3.f
@@ -292,8 +292,8 @@
$ X11(I,I), LDX11, WORK(ILARF) )
CALL DLARF( 'R', M-P-I, Q-I+1, X21(I,I), LDX21, TAUQ1(I),
$ X21(I+1,I), LDX21, WORK(ILARF) )
- C = SQRT( DNRM2( P-I+1, X11(I,I), 1, X11(I,I),
- $ 1 )**2 + DNRM2( M-P-I, X21(I+1,I), 1, X21(I+1,I), 1 )**2 )
+ C = SQRT( DNRM2( P-I+1, X11(I,I), 1 )**2
+ $ + DNRM2( M-P-I, X21(I+1,I), 1 )**2 )
THETA(I) = ATAN2( S, C )
*
CALL DORBDB5( P-I+1, M-P-I, Q-I, X11(I,I), 1, X21(I+1,I), 1,
diff --git a/SRC/dorbdb4.f b/SRC/dorbdb4.f
index 8c723605..4cbd4c42 100644
--- a/SRC/dorbdb4.f
+++ b/SRC/dorbdb4.f
@@ -341,9 +341,8 @@
CALL DLARF( 'R', M-P-I, Q-I+1, X21(I,I), LDX21, TAUQ1(I),
$ X21(I+1,I), LDX21, WORK(ILARF) )
IF( I .LT. M-Q ) THEN
- S = SQRT( DNRM2( P-I, X11(I+1,I), 1, X11(I+1,I),
- $ 1 )**2 + DNRM2( M-P-I, X21(I+1,I), 1, X21(I+1,I),
- $ 1 )**2 )
+ S = SQRT( DNRM2( P-I, X11(I+1,I), 1 )**2
+ $ + DNRM2( M-P-I, X21(I+1,I), 1 )**2
PHI(I) = ATAN2( S, C )
END IF
*
diff --git a/SRC/sorbdb1.f b/SRC/sorbdb1.f
index b1f5f462..b679b7de 100644
--- a/SRC/sorbdb1.f
+++ b/SRC/sorbdb1.f
@@ -304,9 +304,8 @@
$ X11(I+1,I+1), LDX11, WORK(ILARF) )
CALL SLARF( 'R', M-P-I, Q-I, X21(I,I+1), LDX21, TAUQ1(I),
$ X21(I+1,I+1), LDX21, WORK(ILARF) )
- C = SQRT( SNRM2( P-I, X11(I+1,I+1), 1, X11(I+1,I+1),
- $ 1 )**2 + SNRM2( M-P-I, X21(I+1,I+1), 1, X21(I+1,I+1),
- $ 1 )**2 )
+ C = SQRT( SNRM2( P-I, X11(I+1,I+1), 1 )**2
+ $ + SNRM2( M-P-I, X21(I+1,I+1), 1 )**2 )
PHI(I) = ATAN2( S, C )
CALL SORBDB5( P-I, M-P-I, Q-I-1, X11(I+1,I+1), 1,
$ X21(I+1,I+1), 1, X11(I+1,I+2), LDX11,
diff --git a/SRC/sorbdb2.f b/SRC/sorbdb2.f
index 582540e3..4c047a37 100644
--- a/SRC/sorbdb2.f
+++ b/SRC/sorbdb2.f
@@ -291,8 +291,8 @@
$ X11(I+1,I), LDX11, WORK(ILARF) )
CALL SLARF( 'R', M-P-I+1, Q-I+1, X11(I,I), LDX11, TAUQ1(I),
$ X21(I,I), LDX21, WORK(ILARF) )
- S = SQRT( SNRM2( P-I, X11(I+1,I), 1, X11(I+1,I),
- $ 1 )**2 + SNRM2( M-P-I+1, X21(I,I), 1, X21(I,I), 1 )**2 )
+ S = SQRT( SNRM2( P-I, X11(I+1,I), 1 )**2
+ $ + SNRM2( M-P-I+1, X21(I,I), 1 )**2 )
THETA(I) = ATAN2( S, C )
*
CALL SORBDB5( P-I, M-P-I+1, Q-I, X11(I+1,I), 1, X21(I,I), 1,
diff --git a/SRC/sorbdb3.f b/SRC/sorbdb3.f
index ea52f4db..74ea60f6 100644
--- a/SRC/sorbdb3.f
+++ b/SRC/sorbdb3.f
@@ -293,8 +293,8 @@
$ X11(I,I), LDX11, WORK(ILARF) )
CALL SLARF( 'R', M-P-I, Q-I+1, X21(I,I), LDX21, TAUQ1(I),
$ X21(I+1,I), LDX21, WORK(ILARF) )
- C = SQRT( SNRM2( P-I+1, X11(I,I), 1, X11(I,I),
- $ 1 )**2 + SNRM2( M-P-I, X21(I+1,I), 1, X21(I+1,I), 1 )**2 )
+ C = SQRT( SNRM2( P-I+1, X11(I,I), 1 )**2
+ $ + SNRM2( M-P-I, X21(I+1,I), 1 )**2 )
THETA(I) = ATAN2( S, C )
*
CALL SORBDB5( P-I+1, M-P-I, Q-I, X11(I,I), 1, X21(I+1,I), 1,
diff --git a/SRC/sorbdb4.f b/SRC/sorbdb4.f
index 9ed16a71..3f90b4b8 100644
--- a/SRC/sorbdb4.f
+++ b/SRC/sorbdb4.f
@@ -342,9 +342,8 @@
CALL SLARF( 'R', M-P-I, Q-I+1, X21(I,I), LDX21, TAUQ1(I),
$ X21(I+1,I), LDX21, WORK(ILARF) )
IF( I .LT. M-Q ) THEN
- S = SQRT( SNRM2( P-I, X11(I+1,I), 1, X11(I+1,I),
- $ 1 )**2 + SNRM2( M-P-I, X21(I+1,I), 1, X21(I+1,I),
- $ 1 )**2 )
+ S = SQRT( SNRM2( P-I, X11(I+1,I), 1 )**2
+ $ + SNRM2( M-P-I, X21(I+1,I), 1 )**2
PHI(I) = ATAN2( S, C )
END IF
*
diff --git a/SRC/zunbdb1.f b/SRC/zunbdb1.f
index 4125450c..6c1c49a6 100644
--- a/SRC/zunbdb1.f
+++ b/SRC/zunbdb1.f
@@ -308,9 +308,8 @@
CALL ZLARF( 'R', M-P-I, Q-I, X21(I,I+1), LDX21, TAUQ1(I),
$ X21(I+1,I+1), LDX21, WORK(ILARF) )
CALL ZLACGV( Q-I, X21(I,I+1), LDX21 )
- C = SQRT( DZNRM2( P-I, X11(I+1,I+1), 1, X11(I+1,I+1),
- $ 1 )**2 + DZNRM2( M-P-I, X21(I+1,I+1), 1, X21(I+1,I+1),
- $ 1 )**2 )
+ C = SQRT( DZNRM2( P-I, X11(I+1,I+1), 1 )**2
+ $ + DZNRM2( M-P-I, X21(I+1,I+1), 1 )**2 )
PHI(I) = ATAN2( S, C )
CALL ZUNBDB5( P-I, M-P-I, Q-I-1, X11(I+1,I+1), 1,
$ X21(I+1,I+1), 1, X11(I+1,I+2), LDX11,
diff --git a/SRC/zunbdb2.f b/SRC/zunbdb2.f
index 89104f65..2b56ec06 100644
--- a/SRC/zunbdb2.f
+++ b/SRC/zunbdb2.f
@@ -295,8 +295,8 @@
CALL ZLARF( 'R', M-P-I+1, Q-I+1, X11(I,I), LDX11, TAUQ1(I),
$ X21(I,I), LDX21, WORK(ILARF) )
CALL ZLACGV( Q-I+1, X11(I,I), LDX11 )
- S = SQRT( DZNRM2( P-I, X11(I+1,I), 1, X11(I+1,I),
- $ 1 )**2 + DZNRM2( M-P-I+1, X21(I,I), 1, X21(I,I), 1 )**2 )
+ S = SQRT( DZNRM2( P-I, X11(I+1,I), 1 )**2
+ $ + DZNRM2( M-P-I+1, X21(I,I), 1 )**2 )
THETA(I) = ATAN2( S, C )
*
CALL ZUNBDB5( P-I, M-P-I+1, Q-I, X11(I+1,I), 1, X21(I,I), 1,
diff --git a/SRC/zunbdb3.f b/SRC/zunbdb3.f
index 37a5c89f..d1a0415c 100644
--- a/SRC/zunbdb3.f
+++ b/SRC/zunbdb3.f
@@ -295,8 +295,8 @@
CALL ZLARF( 'R', M-P-I, Q-I+1, X21(I,I), LDX21, TAUQ1(I),
$ X21(I+1,I), LDX21, WORK(ILARF) )
CALL ZLACGV( Q-I+1, X21(I,I), LDX21 )
- C = SQRT( DZNRM2( P-I+1, X11(I,I), 1, X11(I,I),
- $ 1 )**2 + DZNRM2( M-P-I, X21(I+1,I), 1, X21(I+1,I), 1 )**2 )
+ C = SQRT( DZNRM2( P-I+1, X11(I,I), 1 )**2
+ $ + DZNRM2( M-P-I, X21(I+1,I), 1 )**2 )
THETA(I) = ATAN2( S, C )
*
CALL ZUNBDB5( P-I+1, M-P-I, Q-I, X11(I,I), 1, X21(I+1,I), 1,
diff --git a/SRC/zunbdb4.f b/SRC/zunbdb4.f
index 91ed9d05..b73e051f 100644
--- a/SRC/zunbdb4.f
+++ b/SRC/zunbdb4.f
@@ -344,9 +344,8 @@
$ X21(I+1,I), LDX21, WORK(ILARF) )
CALL ZLACGV( Q-I+1, X21(I,I), LDX21 )
IF( I .LT. M-Q ) THEN
- S = SQRT( DZNRM2( P-I, X11(I+1,I), 1, X11(I+1,I),
- $ 1 )**2 + DZNRM2( M-P-I, X21(I+1,I), 1, X21(I+1,I),
- $ 1 )**2 )
+ S = SQRT( DZNRM2( P-I, X11(I+1,I), 1 )**2
+ $ + DZNRM2( M-P-I, X21(I+1,I), 1 )**2
PHI(I) = ATAN2( S, C )
END IF
*