如果我们查看 C11 的草案,将保留以下名称:
7.31 Future library directions
The following names are grouped under individual headers for convenience. All external
names described below are reserved no matter what headers are included by the program.
7.31.1 Complex arithmetic <complex.h>
The function names
cerf cerfc cexp2 cexpm1 clog10 clog1p clog2 clgamma ctgamma
and the same names suffixed with f or l may be added to the declarations in the
<complex.h> header.
因为我非常希望将复杂的 Gamma 函数视为标准 C 的一部分(因为它们是许多其他复杂函数的基础),所以我想知道 7.31.1 子句的真正含义是什么。
为什么只添加声明而不添加它们的定义?
我们可以期待它们用于下一个 C 标准或次要版本吗? (如果答案是肯定的,下一个标准什么时候出?)
是否有任何实现可以作为编译器的非标准扩展?
几个月前,我发布了一个库 libcerf它提供了缺失的函数 cerf 和 cerfc,基于 Steven G. Johnson 的数字代码。我们的实现精确到 13-14 位数字,这对于几乎所有实际用途都足够了 - 但在实现这一点时,人们明白需要做多少工作才能编写一个可接受的标准:这不太可能被采用任何人很快。
关于您关于 clgamma 和 ctgamma 的问题:不要等待标准。搜索有效的代码。理想情况下,包装此代码并提供像 libcerf 这样的库,它几乎与标准实现一样好。
我是一名优秀的程序员,十分优秀!