0

如果不能使用分数,例如在无限精度计算中,有人可以解释解决诸如 2^2.2 之类的问题所涉及的步骤吗?

4

2 回答 2

2

在一般情况下 a^b,其中^是取幂(不是 XOR),并且 a 和 b 是实数:

pow(a,b) = exp( b * log(a) ) 
exp(x)   = sum[n = 0->inf]  x^n / n!
ln(x)    = sum[n = 1->inf]  (x-1)^n / n
x^n      = n == 0  ? 1   // unless x == 0
          (n%2==0) ? x^(n/2) * x^(n/2) 
          othewrwise x*x^(n-1)  
          // faster than loop for large n, 

这需要两个系列,您需要以一定的精度终止,但取幂仅适用于自然数。

您还必须处理 a 和 b ( a^-b = 1/(a^b)) 的符号、零值等。

于 2012-03-26T00:09:08.073 回答
0

pow(x,y)(ie )的典型实现x^y涉及计算exp(y*log(x))。不涉及分数。

于 2012-03-26T00:00:10.570 回答