fasb()在此函数中找不到任何内容 我正在查看几天前我交给的C++代码,我发现下面的行: double penaltySum=0. double logDet = log(jacDetPtr[i]); penaltySum += fasb(logDet);

fasb()在此函数中找不到任何内容 我正在查看几天前我交给的C++代码,我发现下面的行: double penaltySum=0. double logDet = log(jacDetPtr[i]); penaltySum += fasb(logDet);,c++,C++,我查看了所有源代码,找不到该函数的任何定义。此外,谷歌搜索结果一无所获 如果我猜测一下,我会认为只有当logDet是有限的时,这才具有累积效应 还有其他人遇到过这个函数吗?这可以跨平台使用吗 代码的使用可以在这里找到:你真的在问关于std::fabs?这是C++代码;应该从问题中删除C标记。该函数出现两次,但每次都出现在\ifdef\u USE\u SQUARE\u LOG\u JAC的一个分支中(该分支未定义)。领先的下划线的使用是可疑的,但超出了您的控制(它位于为C++实现保留的命名空间)。

我查看了所有源代码,找不到该函数的任何定义。此外,谷歌搜索结果一无所获

如果我猜测一下,我会认为只有当
logDet
是有限的时,这才具有累积效应

还有其他人遇到过这个函数吗?这可以跨平台使用吗


代码的使用可以在这里找到:

你真的在问关于
std::fabs
?这是C++代码;应该从问题中删除C标记。该函数出现两次,但每次都出现在
\ifdef\u USE\u SQUARE\u LOG\u JAC
的一个分支中(该分支未定义)。领先的下划线的使用是可疑的,但超出了您的控制(它位于为C++实现保留的命名空间)。但是,您似乎需要定义
\u USE\u SQUARE\u LOG\u JAC
,以便添加对数的平方。表面上看,
fasb()
似乎是一种对浮点(
double
)值进行平方运算的方法。@JonathanLeffler,从代码的核心逻辑来看,似乎如果
\u SQUARE\u LOG\u JAC
使用绝对值,在
#ifdef(使用)SQUARE(平方)LOG(单位)JAC(
)的其他地方,选择的是SQUARE和abs值,因此得出的结论是fasb是一个拼写错误,实际上是fabs。代码编译的原因是第14行的
\define\u USE\u SQUARE\u LOG\u JAC
删除这一行,您将得到编译时错误
\ifdef
的备用分支可能从未实际测试过。@Luca因为第4行定义了“USE\u SQUARE\u LOG\u JAC”,所以您可以安全地忽略此功能。如果你真的想确定的话,我建议把它改成fabs,因为intest是在代码的其余部分中找到绝对值,其中没有定义_USE_SQUARE_LOG_JAC