Rule_Tn
Fortran ライブラリ CUBPACKのサブルーチンにはIntegrand
、統合ベクトル関数を記述するパラメータが必要です。それは
INTERFACE
FUNCTION Integrand(NF,X) RESULT(Value)
USE Precision_Model
INTEGER, INTENT(IN) :: NF
REAL(KIND=STND), DIMENSION(:), INTENT(IN) :: X
REAL(KIND=STND), DIMENSION(NF) :: Value
END FUNCTION Integrand
END INTERFACE
Rule_Tn
C コードから呼び出したいので、上記のこのインターフェイスに正確に一致する C で関数型を定義する必要があります。したがって、Fortran 関数が配列を返す方法を理解しようとしました。最初は、次の C シグネチャを想定していました
void Integrand(double* value, const int* nf, const int* x);
上記のインターフェースに一致します。しかし、はるかに間違っています!セグメンテーション違反になりました。そして、 double が に対応する型であることを既にテストしておりREAL(KIND=STND)
、STND
はモジュールから出てきますPrecision_Model
。
正しい署名を教えてください。GNU Fortran および C コンパイラを使用しています。