octech このページをアンテナに追加 RSSフィード

2008-07-24 shave! snipplr!

[][]任意の底を持つ対数 13:34 任意の底を持つ対数を含むブックマーク

ちょっとしたアプリを作ろうとしていたら、いつの間にかもともと作ろうとしてた言語から離れていて、rubyで書いていた。そこで対数を計算する必要があって、特になにも考えずに書いていたら、なんと、rubyには「任意の底を持つ対数を計算する関数」が用意されていないのですね!

module Math」を参考に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実装が一覧になっていた。

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

[][][]使えるコード登録サイト「SNIPPLR」 14:17 使えるコード登録サイト「SNIPPLR」を含むブックマーク

SNIPPLRという、使えるコード片(snippets)を登録しておけるサイトがあります。

ちょっとした便利なコードや、忘れがちなルーチンコードなどを登録しておいて、みんなで共有しよう、という意図のサイト。

今まではたまに参照する程度だったのだけど、今回ユーザー登録して、上記エントリ「任意の底を持つ対数」のコードも登録してみました。→「Logarithm with any base (任意の底を持つ対数) - Ruby - Snipplr Social Snippet Repository

f:id:octech:20080724141058p:image