52 lines
1.4 KiB
Plaintext
52 lines
1.4 KiB
Plaintext
>>> 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')
|