[SciPy-dev] test failures in current trunk: sparse\linalg\isolve, and special

Nathan Bell wnbell@gmail....
Sun Feb 15 21:00:36 CST 2009


On Sun, Feb 15, 2009 at 7:53 PM, Nathan Bell <wnbell@gmail.com> wrote:
>
> I can confirm the failure on Win32 and have isolated it to bicgstab.
> I'll continue searching for the source of the error.
>
> I noticed that the Windows binaries for SciPy 0.7 also have this
> problem, but the test has been marked as a known failure.  Was this
> bug ever reported?
>

The problem seems to be that when bicgstab enters the Fortran function
BICGSTABREVCOM it dies a horrible death and returns INFO=-10
signifying breakdown of the algorithm.  This doesn't make sense,
because the calling function hasn't really provided the Fortran side
with any real data except the right hand side (b) and the initial
iterate (x) which happens to be 0 in this case.  I don't know Fortran,
but I believe the condition on 269 should be false since (I think)
WORK(1,RTLD) and WORK(1,R) are the same vector (both copies of b)
which, in the tests, is chosen randomly.

    268 	      RHO = <xdot>( N, WORK(1,RTLD), 1, WORK(1,R), 1 )
    269 	      IF ( ABS( RHO ).LT.RHOTOL ) GO TO 25

When I changed RHOTOL and OMEGATOL from:
    228 	      RHOTOL = <sdsd>GETBREAK()
    229 	      OMEGATOL = <sdsd>GETBREAK()
To:
    228 	      RHOTOL = 0
    229 	      OMEGATOL = 0
The tests pass.  Can a Fortran guru tell us if GETBREAK() is suspect?

Here are the suspects:

http://projects.scipy.org/scipy/scipy/browser/trunk/scipy/sparse/linalg/isolve/iterative.py#L134
http://projects.scipy.org/scipy/scipy/browser/trunk/scipy/sparse/linalg/isolve/iterative/BiCGSTABREVCOM.f.src
http://projects.scipy.org/scipy/scipy/browser/trunk/scipy/sparse/linalg/isolve/iterative/getbreak.f.src

I give up for now.

-- 
Nathan Bell wnbell@gmail.com
http://graphics.cs.uiuc.edu/~wnbell/


More information about the Scipy-dev mailing list