2017-03-07 10 views
0

내가 모듈이 f2py를 통해 컴파일해야 할 말 벡터 매개 변수에 대한 부정적인 인덱스를 컴파일되지 않습니다 :f2py가

test.f90

module test 
implicit none 

integer, parameter :: q = 2 
real(8), parameter, dimension(-q:q) :: vec = (/ 1, 2, 3, 4, 5 /) 

contains 

subroutine writevec() 
    write(*,*) vec 
end subroutine 

end module 

f2py -c -m test test.f90를 실행하면, 내가 얻을 오류

/tmp/tmp6X6gsD/src.linux-x86_64-2.7/testmodule.c:176:17: error: expected expression before ‘)’ token 
{"vec",1,{{-(-)+1}},NPY_DOUBLE}, 

한편, vecdimension(2*q+1)으로 작동합니다. 일종의. 내가 파이썬으로 가져올 때 :

>>> from test import test 
>>> test.writevec() 
>>> 1.0000000000000000  2.0000000000000000  3.0000000000000000  4.0000000000000000  5.0000000000000000  

>>> test.vec 
>>> array([ 1., 2.]) # ??? 

무슨 일이 벌어지고 있니?

답변

0

배열 크기를 올바르게 얻기 위해 서명 파일을 만들 수 있습니다. 이것은 파이썬 모듈 'mymod를'에 대한 서명 파일 'sign.pyf'를 작성 그런 다음

f2py -m mymod -h sign.pyf test.f90 

,이 컴파일하는 데 사용 :

f2py -c sign.pyf test.f90 

라이브러리는 수입 및 파이썬에서 사용할 수 있습니다 :

>>>import mymod 
>>>mymod.test.writevec() 

참고 배열 범위에서는 시프트하고 제 소자 파이썬 인덱스 0을 가지고 :

01,239,759,966,