如何实施没有第n个根的理性数字的指示?
-
09-10-2019 - |
题
它仅适用于我的log(基本“ e”),sin,tan和sqrt(仅平方根)函数和基本算术运算符(+ - * / mod)。我也有“ E”常数。
我正在尝试使用洪水(zoho.com)的几个问题,以获取这些限制。我必须实施理性(分数)基础和指数的指示。
解决方案
说你想计算 pow(A, B)
考虑 B
在基地2中:
B = b[n] * pow(2, n ) +
b[n-1] * pow(2, n - 1) +
...
b[2] * pow(2, 2 ) +
b[1] * pow(2, 1 ) +
b[0] * pow(2, 0 ) +
b[-1] * pow(2, -1 ) +
b[-2] * pow(2, -2 ) +
...
= sum(b[i] * pow(2, i))
在哪里 b[x]
可 0
或者 1
和 pow(2, y)
是两个的整数力量(即 1
, 2
, 4
, 1/2
, 1/4
, 1/8
).
然后,
pow(A, B) = pow(A, sum(b[i] * pow(2, i)) = mul(pow(A, b[i] * pow(2, i)))
所以 pow(A, B)
可以仅使用乘法和平方根操作来计算
其他提示
如果您的功能f()确实是e^x,其中e为常数,而x是任何数字,则可以执行此操作:( a是基础,b是指数,ln是log-e)
a^b = f(b * ln(a))
如果您没有E^X的F(),那么它会变得更棘手。如果您的指数(b)是理性的,那么您应该能够找到整数m和n,以便使用某种循环进行B = m/n。一旦拥有M和N,您就会制作另一个循环,该循环本身会乘以M次获得A^M,然后将A本身乘以A n次获得A^n,然后将A^m/a^n分开以获取A^ (m/n),是a^b。
不隶属于 StackOverflow