0

非常に基本的な質問があります。古いFORTRAN77コードがいくつかあり、Windowsのf2pyでコンパイルしました。Pythonで呼び出したとき、戻り値は正しい値ではなく0.0です。

これがコンパイル前の私の正しいFORTRANコード(テスト用)です

  FUNCTION ttt (APPRAT, METRAT)

  REAL APPRAT, METRAT      

  IF(APPRAT.LE.0.0)THEN
    ttt = METRAT * 0.89218
  ELSE
    ttt = APPRAT
  ENDIF
  RETURN
  END 

これがPythonコードです

import al4 #the name of compiled FORTRAN 77 code which is a .pyd file
ff=(al4.ttt(-1,10))
print(ff)

すべてが正しければ、戻り値として8.9218を取得する必要がありますが、常に0.0を取得します。だから誰かが私にいくつかの提案をすることができますか?前もって感謝します!!

4

1 に答える 1

1

これが、f2pyのドキュメントを見て一緒にハックした小さなものです。

 c This is file al4.f

      FUNCTION ttt (APPRAT, METRAT)
      IMPLICIT NONE
      REAL APPRAT, METRAT,ttt
 cf2py intent(in), APPRAT,METRAT
 cf2py intent(out) ttt      

      IF(APPRAT.LE.0.0)THEN
         ttt = METRAT * 0.89218
      ELSE
         ttt = APPRAT
      ENDIF
      RETURN
      END 

次に、それを次のように「コンパイル」し、 f2py -c al4.f -m al4 上記のpythonスクリプトを実行しました(al4.soと同じディレクトリで-拡張子「.so」はシステムによって異なる場合があります)。これらは、f2pyに引数をどう処理するかを指示cf2pyする特別なコメント(Fortranコメントの最初の列にあります)です。cこの場合、2つの入力と1つの出力があります...

編集 私はコメントで言うことを練習する必要があります...(関数にIMPLICIT NONEを追加しました)

于 2012-03-29T01:37:29.310 に答える