Modelicaでは、外部関数を定義することができます。
仕様の第12.9章では、CとFortran77が
サポートされており、将来的にはC++とFortran90がサポートされる可能性があると述べています。
今、どのバージョンのCがサポートされているのだろうか?
特に、C99で利用できる対数ガンマ関数が必要なので、次のことを試しました。
function lgamma "logarithmic gamma function"
input Real u;
output Real y;
external "C" y = lgamma(u);
end lgamma;
ただし、powfは機能しますが、機能しません。
function powf "power function a^b"
input Real a;
input Real b;
output Real y;
external "C" y = powf(a,b);
end powf;
これはおそらく、powfがCで利用可能であるのに対し、lgammaはC99で導入されたために発生します。
しかし、これはModelica、Dymola、または私のコンパイラの制限ですか?
C99外部関数を機能させる方法はありますか?ウィキペディアのC数学演算のリストには、
誤差関数erfやerfcなどのより興味深い関数がいくつかあります。これらもあると便利です。