3
私はbcのためにthis questionを見ましたが、これはどのようにDCで行いますか? log_2(5)
を計算するにはdcの対数を計算する
10k
5q2q/
:コマンドがq
た場合たとえば、私はこのようにそれを使用したいと思います。
私はbcのためにthis questionを見ましたが、これはどのようにDCで行いますか? log_2(5)
を計算するにはdcの対数を計算する
10k
5q2q/
:コマンドがq
た場合たとえば、私はこのようにそれを使用したいと思います。
dc
には組み込みのコマンドはありませんが、対数をマクロとして計算するにはnumerical methodsのいずれかを実装できます。例えば
、this oneはln((1+y)/(1-y))
テイラー級数展開を使用してln(x)
を計算します:
# L (x -- y)
# Natural logarithm of `x`.
[ 1-d2+/
d2*Sk # Initialize multiplier
d*Sy # Initialize multiplier factor
0Ss # Initialize accumulator
10K^Sp # Initialize 10^k power
[ d1r/lk*ls+lsrdss # Update accumulator
-lp*d*1 [s_q]s_>_ # Check precision
lkly*sk 2+ # Update multiplier and counter
lfx
]Sf
1lfxLs
LkLyLpLfs_s_s_s_] sL
はこのようにそれを使用します。
10k
5lLx 2lLx /p
それが大量(X»1)のために、特に、最適ではないですが、必要に応じてより速い収束性を持つ方法をこの方法で実装することもできます。
搾りバージョン(やや速い):
[1-d2+/d2*Skd*Sy0Ss10K^Sp[d1r/lk*ls+lsrdss-lp*d*1[s_q]s_>_lkly*sk2+lfx]Sf1lfxLsLkLyLpLfs_s_s_s_]sL