在Modelica中,可以定義外部函數。
該規範的第12.9章規定C和Fortran77支持,
將來可能會支持C++和Fortran90。
現在我想知道哪個versions of C被支持?Modelica外部函數:C與C99
我特別需要對數伽瑪功能,這是在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外部函數正常工作?
在Wikipedia list of C mathematical operations有一些更有趣的功能,如誤差函數erf和erfc,這些也很好。
使用Visual Studio 2013 Microsoft引入了一個擴展了功能的Community Edition,同時也帶來了一個擴展的Math庫!所有提到的功能現在都可以使用,還有更多功能可用,請參閱'C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ VC \ include \ math.h' – matth