c – 平方根元函数?
发布时间:2020-12-16 05:44:50 所属栏目:百科 来源:网络整理
导读:是否可以使用具有以下签名的元函数计算整数的平方根: templateunsigned int N inline double sqrt(); (或者可能使用constexpr关键字,我不知道什么是最好的). 这样,sqrt 2()将在编译时被1.414 …替换. 什么是这种功能的最佳实现? 解决方法 这可能不是你想要
是否可以使用具有以下签名的元函数计算整数的平方根:
template<unsigned int N> inline double sqrt(); (或者可能使用constexpr关键字,我不知道什么是最好的). 什么是这种功能的最佳实现? 解决方法
这可能不是你想要的,但我想确保你意识到通常通过优化,编译器无论如何都会在编译时计算结果.例如,如果您有此代码:
void g() { f(sqrt(42)); } 使用g 4.6.3进行优化-O2,得到的汇编代码为: 9 0000 83EC1C subl $28,%esp 11 0003 DD050000 fldl .LC0 12 0009 DD1C24 fstpl (%esp) 13 000c E8FCFFFF call _Z1fd 14 0011 83C41C addl $28,%esp 16 0014 C3 ret 73 .LC0: 74 0000 6412264A .long 1244009060 75 0004 47EC1940 .long 1075440711 实际上从未调用sqrt函数,并且该值仅作为程序的一部分存储. 因此,要创建一个技术上符合您要求的功能,您只需要: template<unsigned int N> inline double meta_sqrt() { return sqrt(N); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- postgresql – 异常中的SQLAlchemy Unicode问题
- MSFlexGrid与DataGrid 的异同
- [Swift]LeetCode869. 重新排序得到 2 的幂 | Reordered Pow
- ruby – 通过字符串在模块中创建类的实例
- ORACLE-工作常用配置及命令记录-导入sql、unl文件、查看数据
- Halo 导航器的子代必须实现 INavigatorContent
- postgresql – 将逗号分隔的列数据拆分为其他列
- ruby-on-rails – self.included – 包括Ruby中模块的类方法
- bootstrap weebox 支持ajax的模态弹出框
- Flex事件机制浅析