[Scipy-tickets] [SciPy] #871: bicgstab fails on Win32
SciPy
scipy-tickets@scipy....
Sat Feb 21 22:47:38 CST 2009
#871: bicgstab fails on Win32
---------------------------------+------------------------------------------
Reporter: wnbell | Owner: wnbell
Type: defect | Status: new
Priority: normal | Milestone: 0.7.1
Component: scipy.sparse.linalg | Version: devel
Severity: major | Keywords: bicgstab Win32 FORTRAN
---------------------------------+------------------------------------------
Report:
http://thread.gmane.org/gmane.comp.python.scientific.devel/9957/focus=9959
> 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. Is GETBREAK() the culprit?
Relevant links:
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
--
Ticket URL: <http://scipy.org/scipy/scipy/ticket/871>
SciPy <http://www.scipy.org/>
SciPy is open-source software for mathematics, science, and engineering.
More information about the Scipy-tickets
mailing list