[#47605] Rubyでも「private」イコール「非公開」? — Makoto Kuwata <kwa@...>
桑田といいます。
12 messages
2010/11/04
[#47606] Re: Rubyでも「private」イコール「非公開」?
— Yusuke ENDOH <mame@...>
2010/11/04
private constant 提案者の遠藤です。
[#47629] [ANN]第3回ぐんまRubyの勉強会(guRuby)のご案内 — Yuichi NANSAI <nansai@...>
南齋と申します。
2 messages
2010/11/14
[#47633] Mac OS X Snow Leopardのirbで日本語が入力できない — Tomohiko Hayashi <hayashi-t@...>
みなさま
7 messages
2010/11/17
[ruby-list:47641] Re: RandomFloat をリリースしました
From:
Nobuyoshi Nakada <nobu@...>
Date:
2010-11-20 03:00:30 UTC
List:
ruby-list #47641
なかだです。
At Fri, 19 Nov 2010 14:41:12 +0900,
KISHIMOTO, Makoto wrote in [ruby-list:47640]:
> プラットフォームの浮動小数点形式が IEEE754 かどうかのチェックについては
> うまい方法がないようで、autoconf のマニュアル様によれば、
> http://www.gnu.org/software/hello/manual/autoconf/Floating-Point-Portability.html
> いまどき IEEE754 は十分にポータブルだ、とのご託宣があったので、
> 簡単に、適当な数の表現が IEEE754 と一致するかどうかを見る、ということだけ
> やっています。
Math.frexpとMath.ldexpを使えばポータブルに可能なはずです。
class RandomFloat
DIG = Float::MANT_DIG-1
MAX_BIT = 1 << DIG
DIG_MASK = MAX_BIT - 1
def self.dbl2repr dbl
f, e = Math.frexp(dbl)
f = (f.abs * 2) - 1
e += Float::MAX_EXP - 2
e = (e << DIG) + Math.ldexp(f, DIG).to_i
if 1.0/dbl < 0
return -e - 1
else
return e
end
end
def self.repr2dbl repr
if repr < 0 then
neg = true
repr = -(repr + 1)
end
e = (repr >> DIG) - Float::MAX_EXP - DIG + 1
f = (repr & DIG_MASK) + MAX_BIT
f = Math.ldexp(f, e)
f = -f if neg
f
end
end
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦