>>> import pytest
>>> import f2pytest
>>> import pyforttest
>>> print f2pytest.foo.__doc__
foo - Function signature:
  a = foo(a)
Required arguments:
  a : input rank-2 array('f') with bounds (m,n)
Return objects:
  a : rank-2 array('f') with bounds (m,n)

>>> print pyforttest.foo.__doc__
foo(a)

>>> pytest.foo([[1,2],[3,4]])
array([[12, 14],
       [24, 26]])
>>> f2pytest.foo([[1,2],[3,4]])  # F2PY can handle arbitrary input sequences
array([[ 12.,  14.],
       [ 24.,  26.]],'f')
>>> pyforttest.foo([[1,2],[3,4]])
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
pyforttest.error: foo, argument A: Argument intent(inout) must be an array.

>>> import Numeric
>>> a=Numeric.array([[1,2],[3,4]],'f')
>>> f2pytest.foo(a)
array([[ 12.,  14.],
       [ 24.,  26.]],'f')
>>> a   # F2PY makes a copy when input array is not Fortran contiguous
array([[ 1.,  2.],
       [ 3.,  4.]],'f')
>>> a=Numeric.transpose(Numeric.array([[1,3],[2,4]],'f'))
>>> a
array([[ 1.,  2.],
       [ 3.,  4.]],'f')
>>> f2pytest.foo(a)
array([[ 12.,  14.],
       [ 24.,  26.]],'f')
>>> a   # F2PY passes Fortran contiguous input array directly to Fortran
array([[ 12.,  14.],
       [ 24.,  26.]],'f')
# See intent(copy), intent(overwrite), intent(inplace), intent(inout)
# attributes documentation to enhance the above behavior.

>>> a=Numeric.array([[1,2],[3,4]],'f')
>>> pyforttest.foo(a)
>>> a   # Huh? Pyfort 8.5 gives wrong results..
array([[ 12.,  23.],
       [ 15.,  26.]],'f')
