【问题标题】:A simple C++ function with different answers on different computers一个简单的 C++ 函数,在不同的计算机上有不同的答案
【发布时间】:2014-01-30 00:49:30
【问题描述】:

考虑下面的代码,它基本上是 C++ 中的 gamma 函数:

 double myGamma(double x){
 return gamma(x);
}

当我在 Mac OS 10.7.5 上运行代码时,它运行良好。但是,当我在 unix 服务器上运行它时,它会返回奇怪的结果。有谁知道问题是什么? linux系统下的gamma()函数有区别吗?

谢谢,

【问题讨论】:

  • 我不认为 C++ 是你认为的那样。您也懒得告诉我们实际输出是什么,以及为什么您认为其中一个是“错误的”。什么是“最新的 Rcpp”? SO 是一个问题存档,因此该陈述可能很快就会出错。指定所有版本号。并且,如果可以的话,将 RCPP 完全抽象出来。
  • -1 "下面的代码基本上是 C++ 中的 gamma 函数" 甚至不是 C++
  • 那肯定不是 c++ 代码?!? ...
  • @LightnessRacesinOrbit Rcpp 是一个胶水包,它可以很容易地从 R 到 C++ 并返回,整个对象和你有什么;看标签。但正如你和其他人所说,它是一个无辜的旁观者。
  • 移除 Rcpp 标签。编写一个三行的独立 C++ 程序,在两个系统上编译和链接它。比较结果。提示:你没有从 R 那里得到gamma()。你得到的答案对我来说似乎是正确的。

标签: c++ linux c++11


【解决方案1】:

按照 linux 手册中的定义,简要查看我的 gamma 函数会给我以下结果:

[...] 这些函数已被弃用:取而代之的是,酌情使用 tgamma(3) 或 lgamma(3) 函数。 [...]

[...] 由于跨系统行为的历史差异,此功能未在任何标准中指定。 [...]

【讨论】:

  • 这是解决方案,@Tomas Badan。你能指导我你是怎么想出来的吗?有什么地方可以检查linux中哪些功能不同?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多