求解没有分数的十进制指数的算法

时间:2012-03-25 23:34:41

标签: math arbitrary-precision

如果无法使用分数,有人可以解释解决2 ^ 2.2之类的步骤,例如无限精度计算吗?

2 个答案:

答案 0 :(得分: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))的符号,零值等。

答案 1 :(得分:0)

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