【问题标题】:How to compile special mathematical functions with clang?如何用 clang 编译特殊的数学函数?
【发布时间】:2017-03-25 14:57:25
【问题描述】:

可以从tr1调用sph_legendre并用gcc-5gcc-6编译它

#include<tr1/cmath>

int main()
{
    std::tr1::sph_legendre(1,1,0);
    return 0;
} 

不幸的是,如果我尝试使用clang++ 编译它:

clang++ -stdlib=libstdc++ legendre.cpp -o legendre

我明白了

错误:命名空间“std::tr1”中没有名为“sph_legendre”的成员

在第 40.3 节中,C++PP(第 4 版)指出:

“特殊数学函数有一个单独的 ISO 标准 [C++Math,2010]。实现可以将这些函数添加到 cmath”

如何使用clang++ 编译这些特殊函数?

【问题讨论】:

  • 试试std::sph_legendre 见例子:en.cppreference.com/w/cpp/numeric/special_math/sph_legendretr1 于 2005/2007 年推出。
  • Clang 不发货 TR1。不要使用 TR1。
  • @KerrekSB 我正在尝试为一段我没有编写的代码找到解决方案
  • @ilciavo:如果您绝对无法更改任何代码,那么您可能会不走运。您可以尝试寻找另一个 TR1 实施者。不确定 Boost 版本是否可以用作替代品。否则,函数本身也在 GSL 中实现。

标签: c++ clang++ tr1 cmath


【解决方案1】:

正如 Richard 已经提到的,clang 目前不支持 std::sph_legendre。

一个可能的解决方法是使用 boost 库 (http://www.boost.org) 并包含标题:boost/math/tr1.hpp

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-21
    • 2019-03-08
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    • 1970-01-01
    • 2022-01-15
    • 2016-01-20
    相关资源
    最近更新 更多