任意の底を持つ対数

ちょっとしたアプリを作ろうとしていたら、いつの間にかもともと作ろうとしてた言語から離れていて、rubyで書いていた。そこで対数を計算する必要があって、特になにも考えずに書いていたら、なんと、rubyには「任意の底を持つ対数を計算する関数」が用意されていないのですね!
プログラミング言語 Ruby リファレンスマニュアル」を参考にrubyで実装されている関数についてメモしておきます。

Math.log(x)
x の自然対数(底はMath.E)を返します。
Math.log10(x)
x の常用対数(底は10)を返します。

任意の底を持つ対数を計算するコード

以下のページを参考にして、テストしてみたらうまくいきました。

# 任意の底 a を持つ x の対数を計算.
def logA( x, a )
  return (Math.log(x)/Math.log(a))
end

p logA( 2, 2 ) # => 1.0
p logA( 4, 2 ) # => 2.0

大学受験とかの時なら一瞬で分かったことだろうに、すっかり忘れていたよ。

まさに、ヤク毛刈り

他の言語のlog実装

調べているときに見つけたサイトで、いろいろな言語でのlog実装が一覧になっていた。

任意の底の対数を計算する関数は意外に実装されていないのですね。