在 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 数学运算的 Wikipedia 列表中,有一些更有趣的函数,例如误差函数 erf 和 erfc,如果有这些也不错。