相关疑难解决方法(0)

实现基于整数的幂函数pow(int,int)的最有效方法

将整数提升到C中另一个整数的幂的最有效方法是什么?

// 2^3
pow(2,3) == 8

// 5^5
pow(5,5) == 3125
Run Code Online (Sandbox Code Playgroud)

c algorithm math exponentiation

239
推荐指数
8
解决办法
19万
查看次数

为什么从C++ 11中删除了std :: pow(double,int)?

在研究计算p ^ q(指数)的有效方法时,其中q是一个整数并且回顾了C++ 98和C++ 11标准,我注意到std::pow(double, int)在C++ 11 中显然已经消除了重载.

在C++ 98 26.5/6中它有double pow(double, int);签名.

在C++ 11 26.8所有我能找到的是重载采取一对float,double或者long double和一个明确的注意,在参数类型积分和双重的混合物的情况下,在pow(double, double)过载应挑选.

这只是对前一个意图的澄清,如果它们在C++ 98中被错误地添加了,它们是否真的在C++ 11中删除了,还是别的?

显然,该pow(double, int)版本提供了一个很好的优化机会,所以它们被删除似乎很奇怪.编译器是否仍然符合标准以提供这样的优化过载?

c++ c++-standard-library c++11

63
推荐指数
1
解决办法
1万
查看次数

浮点加法和乘法是否相关?

当我添加三个浮点值并将它们与1进行比较时,我遇到了问题.

cout << ((0.7 + 0.2 + 0.1)==1)<<endl;     //output is 0
cout << ((0.7 + 0.1 + 0.2)==1)<<endl;     //output is 1
Run Code Online (Sandbox Code Playgroud)

为什么这些价值观会有所不同?

c++ floating-point

10
推荐指数
3
解决办法
5310
查看次数

用于SSE类型的战俘

我使用SSE类型进行了一些明确的矢量化计算,例如__m128(在xmmintrin.hetc中定义),但是现在我需要将向量的所有元素提升到某个(相同的)幂,即理想情况下我会想要类似的东西__m128 _mm_pow_ps(__m128, float),遗憾的是它不存在.

围绕这个最好的方法是什么?我可以存储向量,调用std::pow每个元素,然后重新加载它.这是我能做的最好的吗?编译器如何std::pow在自动矢量化代码时实现调用,否则代码可以很好地实现矢量化?有没有提供有用功能的库?

(请注意,这个问题与重复有关,当然也没有一个有用的答案.)

c c++ sse pow

7
推荐指数
1
解决办法
4285
查看次数