2

f2py でコンパイルされた fortran モジュールを使用すると、ipython と ipython ノートブックの間で奇妙な精度の違いが発生します。

私のFortranモジュールは次のとおりです。

subroutine tt(string,fmt,n_num,out)
  implicit none
  INTEGER,INTENT(IN)::n_num
  CHARACTER(LEN=*),INTENT(IN)::string
  CHARACTER(LEN=*),INTENT(IN)::fmt
  DOUBLE PRECISION,INTENT(OUT)::out(n_num)
  read(string,fmt) out
end subroutine tt

コンパイル:f2py -c -m andre tt.f90

ipythonで私は得る:

In [1]: import numpy as np
In [2]: import andre
In [3]: out = np.array(andre.tt(' 0.34 4.56 5.67','(3f5.2)',3),dtype=np.float)
In [4]: print out
    [ 0.34  4.56  5.67]

これが望ましい出力です。ただし、ipython ノートブックで同じコードを使用すると、次のようになります。

print out
print out+0.0001
[ 0.  4.  5.]
[  1.00000000e-04   4.00010000e+00   5.00010000e+00]

私は何を間違っていますか?

4

0 に答える 0