LAPACK Archives

[Lapack] Undefined logical variable USEDQD in dlarre and slarre

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
 

<Prev in Thread] Current Thread [Next in Thread>
  • [Lapack] Undefined logical variable USEDQD in dlarre and slarre, vzecca <=


For additional information you may use the LAPACK/ScaLAPACK Forum.
Or one of the mailing lists, or