[Numpy-discussion] f2py problem with complex inout in subroutine

Pearu Peterson pearu.peterson at gmail.com
Sat Jul 24 08:02:50 EDT 2010


Hi Mark,

On Mon, Jul 19, 2010 at 11:49 AM, Mark Bakker <markbak at gmail.com> wrote:
> Thanks for fixing this, Pearu.
> Complex arrays with intent(inout) don't seem to work either.
> They compile, but a problem occurs when calling the routine.

What problem?

> Did you fix that as well?

I guess so, see below.

> Here's an example that doesn't work (sorry, I cannot update to svn 8478 on
> my machine right now):
>
>     subroutine test3(nlab,omega)
>         implicit none
>         integer, intent(in) :: nlab
>         complex(kind=8), dimension(nlab), intent(inout) :: omega
>         integer :: n
>         do n = 1,nlab
>             omega(n) = cmplx(1,1,kind=8)
>         end do
>     end subroutine test3

The example works fine here:

$ f2py -c -m foo test3.f90
>>> import foo
>>> from numpy import *
>>> omega=array([1,2,3,4],dtype='D')
>>> foo.test3(omega)
>>> print omega
--> print(omega)
[ 1.+1.j  1.+1.j  1.+1.j  1.+1.j]

If you cannot update numpy to required revision, you can also modify
the broken file directly. It only involves replacing four lines with
one line in numpy/f2py/cfuncs.py file.
See

  http://projects.scipy.org/numpy/changeset/8478

for details.

HTH,
Pearu



More information about the NumPy-Discussion mailing list