And vzecca@Domain.Removed writes:
To fix this I propose to initialize explicitely USEDQD to .false. at
routine beginning.
This was fixed in SVN back in March, but there has not been a bug-
fix release yet. The repository isn't publically available, so I've
appended the patch&log.
Jason
commit ad4da42c04c3c4ee4072dfce1e5f85774c14e890
Author: Julien Langou <langou@Domain.Removed>
Date: Wed Mar 21 16:39:33 2007 +0000
Initialize the variable USEDQD in xLARRE before use.
(Cf. rev430 in the trunk)
* Bug report from Michel Devel from the UTINAM institute, University of
Franche-Comte, UMR CNRS 6213.
* Patch from Christof and Julien.
* See forum discussion
https://icl.cs.utk.edu/lapack-forum/viewtopic.php?t=350
Michel Devel from the UTINAM institute, University of Franche-Comte, UMR
CNRS
6213 reports that the variable USEDQD is used while not initialized in
xLARRE.
This bug has been found using the Intel Fortran compiler with runtime
checks on
while executing the LAPACK testers.
The patch is to add at the beginning of the code, the initialization:
* Initialize USEDQD, DQDS should be used for ALLRNG unless someone
* explicitly wants bisection.
USEDQD = (( IRANGE.EQ.ALLRNG ) .AND. (.NOT.FORCEB))
Michel Devel reports that the Intel Fortran compiler is now happy.
As a side note, we remark that this bug was fairly hard to find. USEDQD is a
LOGICAL. Since a LOGICAL is either 1 or 0 and since both values are
correct in
the xLARRE code, the code was returning correct answers in any cases.
Moreover, the code was passing most of the compilers test, which means that
most compilers are not able to check for unaffected LOGICAL.
Julien
git-svn-id:
https://icl.cs.utk.edu/svn/lapack-dev/branches/june-release/lapack at 431
8a072113-8704-0410-8d35-dd094bca7971
diff --git a/SRC/dlarre.f b/SRC/dlarre.f
index a9299ac..2ba9eef 100644
--- a/SRC/dlarre.f
+++ b/SRC/dlarre.f
@@ -303,6 +303,10 @@
* Option left in the code for future multisection work.
FORCEB = .FALSE.
+* Initialize USEDQD, DQDS should be used for ALLRNG unless someone
+* explicitly wants bisection.
+ USEDQD = (( IRANGE.EQ.ALLRNG ) .AND. (.NOT.FORCEB))
+
IF( (IRANGE.EQ.ALLRNG) .AND. (.NOT. FORCEB) ) THEN
* Set interval [VL,VU] that contains all eigenvalues
VL = GL
diff --git a/SRC/slarre.f b/SRC/slarre.f
index 91d546d..a7978e2 100644
--- a/SRC/slarre.f
+++ b/SRC/slarre.f
@@ -307,6 +307,10 @@
* Option left in the code for future multisection work.
FORCEB = .FALSE.
+* Initialize USEDQD, DQDS should be used for ALLRNG unless someone
+* explicitly wants bisection.
+ USEDQD = (( IRANGE.EQ.ALLRNG ) .AND. (.NOT.FORCEB))
+
IF( (IRANGE.EQ.ALLRNG) .AND. (.NOT. FORCEB) ) THEN
* Set interval [VL,VU] that contains all eigenvalues
VL = GL
|