On 03/29/2011 09:35 AM, Pearu Peterson wrote:


On Tue, Mar 29, 2011 at 8:13 AM, Pearu Peterson <[email protected] <mailto:[email protected]>> wrote:



    On Mon, Mar 28, 2011 at 10:44 PM, Sturla Molden <[email protected]
    <mailto:[email protected]>> wrote:

        Den 28.03.2011 19:12, skrev Pearu Peterson:
        >
        > FYI, f2py in numpy 1.6.x supports also assumed shape arrays.

        How did you do that? Chasm-interop, C bindings from F03, or
        marshalling
        through explicit-shape?


    The latter.
     Basically, if you have

    subroutine foo(a)
    real a(:)
    end

    then f2py automatically creates a wrapper subroutine

    subroutine wrapfoo(a, n)
    real a(n)
    integer n
    !f2py intent(in) :: a
    !f2py intent(hide) :: n = shape(a,0)
    interface
    subroutine foo(a)
    real a(:)
    end
    end interface
    call foo(a)
    end

    that can be wrapped with f2py in ordinary way.

        Can f2py pass strided memory from NumPy to Fortran?


    No. I haven't thought about it.


Now, after little bit of thinking and testing, I think supporting strided arrays in f2py is easily doable. For the example above, f2py just must generate the following wrapper subroutine

subroutine wrapfoo(a, stride, n)
real a(n)
integer n, stride
!f2py intent(in) :: a
!f2py intent(hide) :: n = shape(a,0)
!f2py intent(hide) :: stride = getstrideof(a)
interface
subroutine foo(a)
real a(:)
end
end interface
call foo(a(1:stride:n))
end

I think it should be a(1:n*stride:stride) or something.

Dag Sverre
_______________________________________________
NumPy-Discussion mailing list
[email protected]
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to