Thanks for the fast and comprehensive answer, Jason.
I checked the lapack-3.1.1 testers with Intel ifort and NAGWare f95 (much
better at debugging I believe) and this one was the only major bug found, that
I remember. I imagine the lapack testers are complete enough that passing those
tests
means the code is free from bugs related to obeying the Fortran standard.
I'll apply the proposed fixes and I'll try again the testers.
Best regards
Vittorio
-----Messaggio originale-----
Da: Jason Riedy [mailto:ejr@Domain.Removed]
Inviato: dom 13/01/2008 23:42
A: vzecca
Cc: lapack@Domain.Removed
Oggetto: Re: [Lapack] Undefined logical variable USEDQD in dlarre and
slarre
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
http://lists.cs.utk.edu/private/lapack/attachments/20080114/a0b31dca/attachment.html
|