[合集] 如何提高乘方运算的效率# Computation - 科学计算
g*y
1 楼
☆─────────────────────────────────────☆
DigitalPig (North! | 想做Polymer Physics) 于 (Sat Sep 15 15:55:30 2007) 提到:
比如 x^6 在FORTRAN里面要写x**6 实际上就是x*x*x*x*x*x 要六次乘法。
如果要提高乘方的效率 尽量减少乘法的数目 怎么办呢?
是不是用对数运算?
谢谢!
☆─────────────────────────────────────☆
skatou (skatou) 于 (Sat Sep 15 16:21:55 2007) 提到:
乘方哎,最多64次就爆int64了吧,直接乘也没有关系吧
不过可以
long long pow(long long x, int exp) {
long long r = 1, ret = x;
while (exp > 1) {
if (exp & 1) {
r *= ret;
}
ret *= ret;
DigitalPig (North! | 想做Polymer Physics) 于 (Sat Sep 15 15:55:30 2007) 提到:
比如 x^6 在FORTRAN里面要写x**6 实际上就是x*x*x*x*x*x 要六次乘法。
如果要提高乘方的效率 尽量减少乘法的数目 怎么办呢?
是不是用对数运算?
谢谢!
☆─────────────────────────────────────☆
skatou (skatou) 于 (Sat Sep 15 16:21:55 2007) 提到:
乘方哎,最多64次就爆int64了吧,直接乘也没有关系吧
不过可以
long long pow(long long x, int exp) {
long long r = 1, ret = x;
while (exp > 1) {
if (exp & 1) {
r *= ret;
}
ret *= ret;