[SciPy-dev] Re: lu_solve problem -- f2py related

pearu at scipy.org pearu at scipy.org
Thu Apr 4 02:15:16 CST 2002


Hi Travis,

On Wed, 3 Apr 2002, Travis Oliphant wrote:

> The easiest way to show the problem is to look at linalg2.solve for the 
> following problem.
> 
> A = rand(5,5)
> b1 = rand(5,2)
> 
> x1 = linalg2.solve(A,b1)
> x2 = linalg2.solve(A,b1[:,0])
> x3 = linalg2.solve(A,b1[:,0].copy())
> 
> print x1[:,0]
> print x2
> print x3

Here is what I get with f2py 2.13.175-1239 and ..-1242:
>>> from scipy_base.testing import rand
>>> import linalg2
>>> A = rand(5,5)
>>> b1 = rand(5,2)
>>> x1 = linalg2.solve(A,b1)
>>> x2 = linalg2.solve(A,b1[:,0])
>>> x3 = linalg2.solve(A,b1[:,0].copy())
>>> print x1[:,0]
[ 0.71772198  1.32782188  0.39482474 -3.19123014  1.71486623]
>>> print x2
[ 0.71772198  1.32782188  0.39482474 -3.19123014  1.71486623]
>>> print x3
[ 0.71772198  1.32782188  0.39482474 -3.19123014  1.71486623]

Looks good to me.

> Notice that x2 is not correct.  The problem I think is the fact that in 
> array_from_pyobj there is a check for (rank > 1) arrays before 
> lazy-transposes are done.  I think a check should be made for rank-1 arrays 
> as well, to handle this case.

What version of f2py are you using? It might be an old and already
fixed problem.

Pearu




More information about the Scipy-dev mailing list