[#4566] [Q] internal type of klass — gotoken@... (GOTO Kentaro)
ごとけんです
[#4576] Ruby ruby-1.3.1-990201 — matz@... (Yukihiro Matsumoto)
Ruby ruby-1.3.1-990201 is out, check out:
[#4603] call for finite/isnan testers — gotoken@... (GOTO Kentaro)
ごとけんです
稲葉です。
ごとけんです
稲葉です。
えぐち@エスアンドイー です。
まつもと ゆきひろです
えぐち@エスアンドイー です。
わたなべです.
えぐち@エスアンドイー です。
えぐち@エスアンドイー です。
まつもと ゆきひろです
ごとけんです
Regard to "[ruby-dev:4788] Re: compare to NaN (Re: Re: call for finite/isnan testers)"
ごとけんです
Regard to "[ruby-dev:4867] Re: compare to NaN (Re: Re: call for finite/isnan testers)"
えぐち@エスアンドイー です。
Regard to "[ruby-dev:4875] Re: compare to NaN (Re: Re: call for finite/isnan testers)"
えぐち@エスアンドイー です。
Regard to "[ruby-dev:4901] Re: compare to NaN (Re: Re: call for finite/isnan testers)"
えぐち@エスアンドイー です。
Regard to "[ruby-dev:4934] Re: compare to NaN (Re: Re: call for finite/isnan testers)"
えぐち@エスアンドイー です。
ふなばです。
えぐち@エスアンドイー です。
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです.
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
まつもと ゆきひろです
まつもと ゆきひろです
えぐち@エスアンドイー です。
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
えぐち@エスアンドイー です。
ごとけんです
In message <199902102105.GAA28213@hanare00.math.sci.hokudai.ac.jp>
えぐち@エスアンドイー です。
ごとけんです
えぐち@エスアンドイー です。
ごとけんです
えぐち@エスアンドイー です。
Regard to "[ruby-dev:5023] Re: [PATCH] configure w/ isinf() (Re: 10e9999.to_i)"
えぐち@エスアンドイー です。
えぐち @エスアンドイーです。
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
[#4614] Re: cookie on cgi-lib.rb — Wakou Aoyama <wakou@...>
青山です。
五十嵐です。
青山です。
まつもと ゆきひろです
高橋です。なつかしい話題が。
前田です。
前田です。
前田です。
五十嵐です。
青山です。
五十嵐です。
青山です。
[#4615] HTML generator — Wakou Aoyama <wakou@...>
青山です。
原です。
青山です。
原です。
青山です。
原です。
前田です。
安達@沖データと申します。
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
原です。
原です。
原です。
前橋です。
[#4619] Why automake+libtool? (Re: --enable-shared/BSD) — Motoyuki Kasahara <m-kasahr@...>
笠原です。
まつもと ゆきひろです
笠原です。
わたなべです.
笠原です。
まつもと ゆきひろです
笠原です。
[#4640] Ruby 1.3.1-990203 — matz@... (Yukihiro Matsumoto)
Ruby 1.3.1-990203 is out, check out:
ごとけんです
まつもと ゆきひろです
ごとけんです
まつもと ゆきひろです
[#4727] [REQ] 2進数整数リテラル — EGUCHI Osamu <eguchi@...>
えぐち@エスアンドイーです。
ごとけんです
まつもと ゆきひろです
えぐち@エスアンドイー です。
[#4755] Re: call for finite/isnan testers — KIMURA Koichi <kbk@...>
[#4767] [BUG] gsub?, Hash? — Wakou Aoyama <wakou@...>
青山です。
[#4825] Backslash(EOL) in comment — WATANABE Hirofumi <eban@...>
わたなべです.
まつもと ゆきひろです
青山です。
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
[#4829] Re: to_i,to_s の素朴な疑問 — HQss_YasuiS/hq_ss@...
[#4837] man Precision — gotoken@... (GOTO Kentaro)
ごとけんです
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
けいじゅ@日本ラショナルソフトウェアです.
[#4851] Re: port NetBSD/ alpha 1.3I — SHIROYAMA Takayuki <psi@...>
[#4852] Re: module Precision — "豊福" <toyofuku@...>
豊福@パパイヤです。
[#4853] Integer#format — Koji Arai <JCA02266@...>
新井です。
まつもと ゆきひろです
新井です。
まつもと ゆきひろです
新井です。
まつもと ゆきひろです
新井です。
まつもと ゆきひろです
新井です。
まつもと ゆきひろです
新井です。
まつもと ゆきひろです
In message <E10Ep01-00009q-00@ev.netlab.co.jp>
まつもと ゆきひろです
ごとけんです
まつもと ゆきひろです
ごとけんです
[#4893] Ruby 1.3.1-990209 — Yukihiro Matsumoto <matz@...>
Ruby 1.3.1-990209 is out, check out:
青山です。
まつもと ゆきひろです
立石です。
[#4900] Ruby 1.3.1-990209 — Yukihiro Matsumoto <matz@...>
Ruby 1.3.1-990209 had serious flaw in installer. I re-packedaged it.
えぐち@エスアンドイー です。
[#4929] Re: module Precision — "豊福" <toyofuku@...>
豊福@パパイヤです。
[#4950] parse error "and" — Koji Arai <JCA02266@...>
新井です。
えぐち@エスアンドイー です。
まつもと ゆきひろです
新井です。
えぐち@エスアンドイー です。
えぐち@エスアンドイー です。
まつもと ゆきひろです
えぐち@エスアンドイー です。
まつもと ゆきひろです
[#4970] Re: to_i,to_s の素朴な疑問 — HQss_YasuiS/hq_ss@...
前田です。
けいじゅ@日本ラショナルソフトウェアです.
前田です。
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
安井、改め moochan です。よろしく。
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
前田です。
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
[#4971] Ruby 1.3.1-990210 — Yukihiro Matsumoto <matz@...>
It's about time for daily Ruby delivery. ;-)
立石です。
[#5010] #{\n}\\ in heredoc — Koji Arai <JCA02266@...>
新井です。
[#5083] [req] cgi-lib NPH support — Shugo Maeda <shugo@...>
前田です。
前田です。
前田です。
前田です。
前田です。
前田です。
前田です。
前田です。
前田です。
前田です。
前田です。
前田です。
青山です。
[#5086] [FIX] checking whether [sg]etpgrp takes no argument — EGUCHI Osamu <eguchi@...>
えぐち@エスアンドイーです。
[#5099] [PATCH] infinite loop of inspect (ruby-1.2.2) — gotoken@... (GOTO Kentaro)
ごとけんです
[#5119] Ruby 1.3.1-990215 — Yukihiro Matsumoto <matz@...>
Ruby 1.3.1-990215 is out, check out:
渡辺哲也です。
渡辺哲也です。
まつもと ゆきひろです
えぐち@エスアンドイー です。
渡辺哲也です。
えぐち@エスアンドイー です。
[#5141] [req] rb_setenv() — Shugo Maeda <shugo@...>
前田です。
[#5176] mod_ruby 0.0.4 — Shugo Maeda <shugo@...>
前田です。
[#5215] Re: a genericity — toyofuku@...
豊福@パパイヤです。
ごとけんです
原です。
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
原です。
ごとけんです
原です。
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
まつもと ゆきひろです
[#5264] Re: ruby 1.2.3 released — Jun Adachi <adachi@...>
安達@沖データと申します。
[#5270] Prec.html — gotoken@... (GOTO Kentaro)
ごとけんです
[#5287] Time class — Tadayoshi Funaba <tadf@...>
ふなばです。
まつもと ゆきひろです
ふなばです。
まつもと ゆきひろです
[#5395] Subseq of Array — Inaba Hiroto <inaba@...>
稲葉です.
青山です。
青山です。
福間@福岡 です。
自己フォローです。
まつもと ゆきひろです
青山です。
まつもと ゆきひろです
青山です。
ふなばです。
青山です。
ふなばです。
青山です。
原です。
青山です。
原です。
ふなばです。
青山です。
ふなばです。
青山です。
ふなばです。
青山です。
ふなばです。
青山です。
まつもと ゆきひろです
青山です。
まつもと ゆきひろです
ふなばです。
青山です。
えぐち@エスアンドイー です。
青山です。
けいじゅ@日本ラショナルソフトウェアです.
ふなばです。
青山です。
青山です。
青山です。
青山です。
まつもと ゆきひろです
原です。
青山です。
原です。
青山です。
ふなばです。
青山です。
[#5455] io_write — IKARASHI Akira <ikarashi@...>
五十嵐です。
[#5527] Re: [ruby-list:12268] Re: It wants to install mon_ruby — moochan <moochan@...>
moochan です。
moochan です.
moochan です.
わたなべです.
[#5558] [BUG] module_eval — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
[#5564] Ruby 1.3.1-990224 — Yukihiro Matsumoto <matz@...>
Ruby 1.3.1-990224 is out, check out:
渡辺哲也です。
えぐち@エスアンドイー です。
わたなべです.
ふなばです。
[#5570] Hash.new — gotoken@... (GOTO Kentaro)
ごとけんです
まつもと ゆきひろです
ごとけんです
まつもと ゆきひろです
ごとけんです
まつもと ゆきひろです
[#5575] Re: a genericity — "豊福" <toyofuku@...>
豊福@パパイヤです。
ごとけんです
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
えぐち@エスアンドイー です。
ごとけんです
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
[#5601] Re: Hash.new — Inaba Hiroto <inaba@...>
稲葉です.
稲葉です。
まつもと ゆきひろです
ごとけんです
まつもと ゆきひろです
[#5641] [REQ] mod_ruby ENV['HTTP_CONNECTION'] — Wakou Aoyama <wakou@...>
青山です。
[#5676] Ruby 1.3.1-990225 — Yukihiro Matsumoto <matz@...>
Ruby 1.3.1-990225 is out, check out:
[#5725] VERSION_DATE — Wakou Aoyama <wakou@...>
青山です。
[#5726] SERVER_SOFTWARE (mod_ruby) — Wakou Aoyama <wakou@...>
青山です。
[#5752] irb on ruby-1.4 — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
[#5776] Precision in Mathematica (Re: Bigfloat) — gotoken@... (GOTO Kentaro)
ごとけんです
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
えぐち@エスアンドイー です。
ごとけんです
けいじゅ@日本ラショナルソフトウェアです.
[ruby-dev:4978] Re: compare to NaN (Re: Re: call for finite/isnan testers)
えぐち@エスアンドイー です。
>>> On Wed, 10 Feb 1999 00:44:57 +0900, えぐち said:
えぐち> えぐち@エスアンドイー です。
えぐち>
えぐち> >>> On Tue, 9 Feb 1999 21:50:25 +0900, keiju@rational.com (石塚圭樹 ) said:
えぐち>
えぐち> keiju> けいじゅ@日本ラショナルソフトウェアです.
...
えぐち> keiju> (^^;;; これって, Cで実装しはじめているって意味ですかね?
えぐち>
えぐち> いやぁ、いきなり C って事はさすがにないです。 ;-)
えぐち> IEEE 754 の巧妙なデータパッキングを見た影響でしょう。
えぐち>
えぐち> Float#<=> は実は、Integer#<=>そのものだと言うあたりの
えぐち> 影響は受けました。
仮数部固定長(10進32桁)で Bigfloat を実装しました。
Ruby のコードです。 添付します。
BASE はともかく、PREC を可変出来るように設計したつもりです。
あと、無限/非数/正規化への配慮もしました。
このレベルのコードをいぢるといろいろわかるもので
def inf?(n)
n == n + 1.0
end
は誤りで、ちょっと n が大きくなると
すぐ無限と早とちりします。^^;;;
def inf?(n)
n == n * 1.1
end
が良い様です。(1.01 でも 1.000000000001 でもいいけど、、)
また、
a = 1.0/0.0)
a.to_i
するとインタプリタがかえって来なくなるような
雰囲気ですが、まだ追求していません。
えぐち
#
# bigfloat.rb:
#
require "e2mmap"
def Bigfloat(num, exp = 0)
Bigfloat.new(num, exp)
end
# dummy definition
class Rational<Numeric;end
class Complex<Numeric;end
def inf?(n)
n == n * 1.1
end
def nan?(n)
n != n
end
class Bigfloat < Numeric
extend Exception2MessageMapper
def_e2message(TypeError, "wrong argument type %s (expected %s)")
BASE = 10 # XXX base of @exp
PREC = 32 # XXX
def Bigfloat.count_prec_of_float
i, a, b = 0, 1, 1.0 / BASE
begin
o, a, b, i = a, a + b, b / BASE, i + 1
end until(a == o)
i
end
FLOAT_PREC = Bigfloat.count_prec_of_float
attr :sign # plus(and zero):+1, minus:-1, +Inf:+Inf, -Inf:-Inf, NaN:NaN
attr :prov # PREC'digits prov.
attr :exp # base BASE of exp.
def normalize!
if @prov == 0 then
@sign, @prov, @exp = +1, 0, 0
return
end
@sign, @prov = +1, @sign * @prov
@sign, @prov = -@sign, -@prov if @prov < 0
while @prov < BASE ** PREC
@prov *= BASE
@exp -= 1
end
while @prov >= BASE ** (PREC + 1)
@prov /= BASE
@exp += 1
end
end
def initialize(num, exp = 0)
@sign, @prov, @exp = +1, 0, 0
case num
when Integer
@sign, @prov, @exp = +1, num, exp
when Rational
Bigfloat.new(num.numerator) / Bigfloat.new(num.denominator)
return
when Float
if inf?(num) or nan?(num) then
@sign, @prov, @exp = num, 0, 0
return
end
@sign = +1;
@sign, num = -1, -num if num < 0
exp10 = Integer(Math.log10(num))
@exp = exp10 - FLOAT_PREC
@prov = Integer(num / (BASE ** @exp))
when String
case num
when /^\s*([+]?Inf)$/
@sign = +1.0 / 0.0
return
when /^\s*(-Inf)$/
@sign = -1.0 / 0.0
return
when /^\s*NaN$/
@sign = 1.0 % 0.0
return
when /^\s*([-+]?[0-9]*)\.?([0-9]*)([eE]([+-]?[0-9]+))?$/
@prov = $1.to_i * (10 ** $2.size)
@sign, @prov = -1, -@prov if @prov < 0
@prov += $2.to_i
@exp = -$2.size
@exp += $4.to_i if $4
end
when Bigfloat
@sign, @prov, @exp = num.instance_eval("[@sign, @prov, @exp ]")
else
Bigfloat.fail(TypeError,
num.type,
"Inetger, Float, String, Bigfloat or Rational")
end
normalize!
end
def inspect
"Bigfloat(#{to_a})"
end
def to_s
return @sign.inspect if inf?(@sign) or nan?(@sign)
s = ""
s += "-" if @sign < 0
n, d = @prov.divmod(10 ** PREC)
s += n.inspect
s += "."
s += format("%0*d", PREC, d.inspect)
# return s if @prov == 0 or (@exp + PREC) == 0
s += "E"
s += (@exp + PREC).inspect
end
def abs
sign, prov, exp = instance_eval("[@sign, @prov, @exp]")
Bigfloat.new(sign, prov, exp)
end
def to_i
Integer(@sign * @prov * 10 ** @exp)
end
def to_f
@sign * @prov * 10.0 ** @exp
end
def <=>(other)
case other
when Bigfloat
#break
when Integer, Rational, Float, String
other = Bigfloat(other)
when Complex
return Complex(self) <=> other
when Array
Bigfloat.fail(TypeError,
other.type,
"Inetger, Float, String, Bigfloat or Rational")
return -1;
else
x, y = other.coerce(self)
return x <=> y
end
result = @sign <=> other.sign
return result if result != 0
result = @exp <=> other.exp
return result if result != 0
return @prov <=> other.prov
end
def +(other)
case other
when Bigfloat
#break
when Integer, Rational, Float
other = Bigfloat(other)
when Complex
return Complex(self) + other
else
x, y = other.coerce(self)
return x + y
end
left = @sign * @prov
right = other.sign * other.prov
if @exp > other.exp then
right *= BASE ** (@exp - other.exp)
exp = @exp
else
left *= BASE ** (other.exp - @exp)
exp = other.exp
end
Bigfloat.new(left + right, exp)
end
def -(other)
case other
when Bigfloat
#break
when Integer, Rational, Float
other = Bigfloat(other)
when Complex
return Complex(self) - other
else
x, y = other.coerce(self)
return x - y
end
left = @sign * @prov
right = other.sign * other.prov
if @exp > other.exp then
right *= BASE ** (@exp - other.exp)
exp = @exp
else
left *= BASE ** (other.exp - @exp)
exp = other.exp
end
Bigfloat.new(left - right, exp)
end
def *(other)
case other
when Bigfloat
#break
when Integer, Rational, Float
other = Bigfloat(other)
when Complex
return Complex(self) * other
else
x, y = other.coerce(self)
return x * y
end
sign = @sign * other.sign
prov = @prov * other.prov
exp = @exp + other.exp
Bigfloat.new(sign * prov, exp)
end
def /(other)
case other
when Bigfloat
#break
when Integer, Rational, Float
other = Bigfloat(other)
when Complex
return Complex(self) / other
else
x, y = other.coerce(self)
return x / y
end
sign = @sign * other.sign
prov = @prov * BASE ** PREC / other.prov
exp = @exp - PREC - other.exp
Bigfloat.new(sign * prov, exp)
end
def %(other)
Bigfloat.new ( self - Integer ( self / other ) * other )
end
def coerce(other)
case other
when Integer, Rational, Float
return Bigfloat(other), self
when Complex
return other, Complex(self)
else
super
end
end
end