Scipy.weaveも良いけどFortranで計算した方が速かったりしないかな?という疑問を解決すべく、f2pyも使ってみました。
やっぱりそれなりに落とし穴がありまして、f90で書くときは変数宣言時の精度指定にkind(0d0)みたいな書き方をするとこけます(参考 *1) orz
あとintent(out)とか指定して、
[f77]Python側でfoo(x,y)と呼び出すと「引数が多すぎるで」と怒られます(参照 *2)。
subroutine foo(x,y)
real,intent(in) :: x
real,intent(out) :: y
y = 2d0 * x
end
[python]みたいに値を受け取らなければいけないようです。ちゃんとここいら(*3)を読んでからやるべきだったかも知れません。
y = foo(x)
肝心の計算速度ですが…ちょっと速くなりましたが、正直どっちでもいい感じです。
*1 http://cens.ioc.ee/projects/f2py2e/FAQ.html*2 http://osdir.com/ml/python.f2py.user/2008-01/msg00002.html
*3 http://scipy.dip.jp/index.php?F2PY
0 件のコメント:
コメントを投稿