質問

ログのみ(ベース「E」)、sin、tan、sqrt(平方根のみ)関数と基本的な算術演算子(+ - * / mod)が利用できます。 「E」定数もあります。

これらの制限のために、Deluge(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 また 1pow(2, y) 2つの整数のパワーです(つまり、 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) 乗算と平方根操作のみを使用して計算できます

他のヒント

e^xを実行する関数f()があり、eは定数であり、xは任意の数字である場合、これを行うことができます:(aはbase、bはexponent、ln is log-eです)

a^b = f(b * ln(a))

e^xを実行するf()がない場合、それはより難しくなります。指数(b)が合理的である場合、ある種のループを使用してb = m/nに整数mとnを見つけることができるはずです。 mとnを取得したら、A^mを取得するためにMを1回自体に乗算する別のループを作成し、A^nを取得するためにA^nをn回、次にA^m/a^nを分割してA^を取得します。 (m/n)、これは^bです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top