首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >常数exp,原木,pow

常数exp,原木,pow
EN

Stack Overflow用户
提问于 2018-05-22 23:52:21
回答 2查看 14.2K关注 0票数 38

我想以可移植的方式使用constexpr版本的标准<cmath>函数,如explogpow。我目前有一个不可移植的解决方案- C++的不兼容扩展,但我关心的是可移植性和未来的防伪(我设想这个扩展可能有一天会从g++中删除)。

我对这些函数的constexpr版本感兴趣,而不是对模板元程序感兴趣--我希望在编译时和运行时都可以使用相同的功能。我不需要C兼容性,但我确实需要快速实现--像Taylor Series扩展这样的简单实现太慢了。

如何实现这些功能?--我对explogpow特别感兴趣

我从我的研究中学到的一些切线相关的东西,

  • 这些函数的标准版本在技术上不是constexpr,因为它们必须有副作用(例如设置errno)才能保持C的兼容性。
  • 在C++11中,允许实现使这些函数为constexpr,但从C++14开始,这是被禁止的( 这个问题的第一个答案这个问题的答案)。这也是我担心在未来版本的constexpr中函数可能不是g++的原因之一。
  • g++对每个数学函数foo的实现只是调用一个内置函数__builtin_foo,该函数被视为constexpr。我或许可以开始调用__builtin_foo函数,而不是foo函数--即使相应的foo函数是兼容的,它们在未来的g++版本中可能仍然是constexpr,但这只会有助于将来的防范,而不是可移植性。
EN

回答 2

Stack Overflow用户

发布于 2018-11-04 13:29:43

你看过嫩芽的实现吗?

Sprout是只提供基于C++11/14星座的容器、算法、随机数、解析、光线跟踪、合成器等的标头库。

https://github.com/bolero-MURAKAMI/Sprout/tree/master/sprout/math

票数 15
EN

Stack Overflow用户

发布于 2020-10-07 12:22:18

查看提供编译时数学函数的gcem。它们可以像在std中那样被调用,但是使用gcem前缀。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50477974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档