[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