知道我们可以使用Divide-and-Conquer算法来计算大指数,例如2 exp 100 = 2 exp(50) * 2 exp(50)
,这是非常有效的,这种方法是否有效使用根?例如2 exp (1/100) = (2 exp(1/50)) exp(1/50)
?
换句话说,我想知道(n exp(1/x))
(n exp(1/y))
x < y
对{{1}}更高效,而x和y是整数。
答案 0 :(得分:1)
当你有非整数指数时,我不认为使用分而治之的方法。我假设使用泰勒多项式将x ^ y计算为e ^(y ln(x))。您可以使用除法和征服计算y的整数部分,然后将其乘以实部。但是将它分成两部分是没有意义的。也:
2 exp(1/100)=(2 exp(1/50))exp(1/50)
事实并非如此。
(2 exp(1/50))exp(1/50)= 2 exp(1/50 + 1/50)= 2 * exp(1/25)!= 2 exp(1/100)
你会这样做:
2 exp(1/100)= 2 * exp(1/200)* exp(1/200)
答案 1 :(得分:0)
由于x,y
的浮点数exp(1/x)
可能不比exp(1/y)
更有效x<y
。
但分而治之的算法就是
如果我们有类似exp(1/x)
的内容,我们就不会再计算它,即我们将2^N
划分为两个相同的较小尺寸问题2^(N/2) * 2^(N/2)
,我们计算2^(N/2)
只有一次。
同样,exp(2/x)
可以划分为exp(1/x)*exp(1/x)
,我们只需计算一次exp(1/x)
。这应该可以提高性能。
分母中较小的数字也应该有所帮助。
所以我认为这应该可行。