[#20490] [BUG] evalがらみでSIGSEGV — "yamamoto madoka" <dan@...2.so-net.ne.jp>
こんにちは、山本 円と申します。
[#20495] 不正なバイト列とのマッチ — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#20499] Re: [ruby-cvs] ruby/ext/curses: * string.c (rb_str_shared_replace): clear flags before copy. — nobu.nakada@...
なかだです。
まつもと ゆきひろです
わたなべです。
まつもと ゆきひろです
わたなべです。
[#20525] [BigDecimal] changing rule of coerce — "Tadashi Saito" <shiba@...2.accsnet.ne.jp>
斎藤です。
小林です。
まつもと ゆきひろです
小林です。
小林です。
前田です。
小林です。
小林です。
小林です。
小林です。
小林です。
[#20570] Marshal upgrade — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
咳といいます。
まつもと ゆきひろです
まつもと ゆきひろです
新井です。
新井です。
まつもと ゆきひろです
咳といいます。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
[#20580] add library(Re:ruby-dev:20570) — たむらけんいち <sgs02516@...>
たむらです。
なひです。
In message <038d01c349cb$eaad71d0$93222fc0@sarion.co.jp>,
まつもと ゆきひろです
In message <1058171960.400840.10041.nullmailer@picachu.netlab.jp>,
話をそらしてしまうかもしれませんが、
In message <20030714.183104.09092354.taca@back-street.net>,
In message <20030715.013655.424936247.gotoyuzo@kotetsu.does.notwork.org>
In message <20030715.025907.26217115.taca@back-street.net>,
In message <20030715.051853.968499478.gotoyuzo@kotetsu.does.notwork.org>
In message <20030721.163444.09092937.taca@back-street.net>,
In message <20030721.191306.60866533.gotoyuzo@kotetsu.does.notwork.org>
In message <20030721.211845.20473808.taca@back-street.net>,
In message <20030722.002037.774147317.gotoyuzo@kotetsu.does.notwork.org>
In message <20030722.003236.72433302.taca@back-street.net>,
[#20582] rexmlのuconv依存 — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
まつもと ゆきひろです
In article <1057770842.878440.16422.nullmailer@picachu.netlab.jp>,
なかだです。
In article <200307100751.h6A7pLFs003667@sharui.nakada.kanuma.tochigi.jp>,
[#20606] ruby-1.8.0 on BSD/OS — OHARA Shigeki <os@...>
大原です。
[#20613] compiling Ruby on AIX (powerpc-ibm-aix4.3.3.0) and Alpha OSF/1 (alphaev67-dec-osf5.1) — NISHIMATSU Takeshi <t-nissie@...>
西松と申します.
なかだです。
西松です. お返事が遅くなり申し訳ありません.
[#20631] SOAP4R in 1.8.0? — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#20655] frozen ThreadGroup — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
まつもと ゆきひろです
In article <1058719939.886480.22830.nullmailer@picachu.netlab.jp>,
[#20680] 1.8.0 on IA64 etc. — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#20691] Re: [Oniguruma] explicit capture — kkosako@...
> -----Original Message-----
[#20716] Re: [Oniguruma] explicit capture — kkosako@...
> -----Original Message-----
[#20748] [BigDecimal] exception handling — "Tadashi Saito" <shiba@...2.accsnet.ne.jp>
斎藤です。
[#20765] Re: [ruby-cvs] ruby/lib: * lib/tmpdir.rb: new library to get temporary directory path, — WATANABE Hirofumi <eban@...>
わたなべです。
まつもと ゆきひろです
わたなべです。
まつもと ゆきひろです
わたなべです。
[#20780] complex.rb — Masahiro TANAKA <masa@...>
complex.rb についての修正案を[ruby-math:00543]で提案しましたが、その後
まつもと ゆきひろです
けいじゅ@いしつかです.
At Tue, 22 Jul 2003 17:30:31 +0900, Yukihiro Matsumoto wrote:
まつもと ゆきひろです
けいじゅ@いしつかです.
At Sat, 26 Jul 2003 06:52:21 +0900, 石塚圭樹 wrote:
[#20791] 1.8.0 preview4 schedule — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
永井@知能.九工大です.
[#20795] warning: terminated thread — Masatoshi SEKI <m_seki@...>
咳といいます。
mput です。こんばんわ。
まつもと ゆきひろです
[#20800] 0**(-1) with rational — Tanaka Akira <akr@...17n.org>
そういえば思い出したのですが、rational を require しているときとしてい
At Wed, 23 Jul 2003 03:30:41 +0900, Tanaka Akira wrote:
[#20810] Rational 始めました。 — Shin-ichiro HARA <sinara@...>
原です。
けいじゅ@いしつかです.
In article <200307241940.EAA14225.keiju@ishitsuka.com>,
けいじゅ@いしつかです.
In article <200307271500.AAA04363.keiju@bc.mbn.or.jp>,
[#20818] ThreadGroup#wait — nobu.nakada@...
なかだです。
まつもと ゆきひろです
[#20868] ruby 1.8.0 preview4 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#20887] ext/openssl undefined BN_pseudo_rand_range — Kazuhiro Yoshida <moriq@...>
もりきゅうです。
[#20915] [BUG] errno == 0 — Kazuhiro Yoshida <moriq@...>
もりきゅうです。win32だけかもしれません。
まつもと ゆきひろです
もりきゅうです。
[#20932] move ChangeLog — Tanaka Akira <akr@...17n.org>
提案なんですが、1.8.0 が出たらそこまでのぶんの ChangeLog を移動しませ
[#20949] multiple Tk interpreter support — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
[#20954] ruby 1.8.0 preview5 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
もりきゅうです。
Siena. です。
[#20957] [BigDecimal] conflict between Numeric#div and BigDecimal#div — "Tadashi Saito" <shiba@...2.accsnet.ne.jp>
斎藤です。
At Mon, 28 Jul 2003 18:26:20 +0900, Tadashi Saito wrote:
まつもと ゆきひろです
At Mon, 28 Jul 2003 21:16:08 +0900, Yukihiro Matsumoto wrote:
まつもと ゆきひろです
At Tue, 29 Jul 2003 14:43:19 +0900, Yukihiro Matsumoto wrote:
原です。
[#20989] Re: [Oniguruma] explicit capture — kkosako@...
> -----Original Message-----
[#21027] -W option — WATANABE Hirofumi <eban@...>
わたなべです。
[ruby-dev:20595] Re: [BigDecimal] changing rule of coerce
斎藤です。
一貫性の話は、他の重鎮の方々から出ているので略させていただきます。
----- Original Message -----
From: "Shigeo Kobayashi" <shigeo@tinyforest.gr.jp>
Sent: Tuesday, July 08, 2003 5:30 PM
Subject: [ruby-dev:20551] Re: [BigDecimal] changing rule of coerce
> > いっそのこと、builtin classにしてBigDecimalリテラルを用意するとい
> > うのはどうでしょうか?
> > 「1.234B」みたいな。
> 最善と思いますが、多分 Rational を builtin するよりももっと面倒そう...
自分も「将来的には」、BigDecimalをbuiltinにすることを推します。
Floatの誤差というのは、何もしないと2**32(64)以上の大きな整数が
扱えないという問題と同種で、計算機内部の事情だと思うからです。
その「事情」を知らない人の驚きをなくすため、Bignumがあるわけですよね。
そういう意味で、BigDecimalはとっても大事なライブラリだと思うわけです。
(「驚き」の事例は、ruby-listで何回も出てますね)
FixnumとBignumとの関係と同じく、同じ表記の小数リテラルで
・誤差が出ない表記の小数は速いFloatに
・誤差が出てしまう小数は正確なBigDecimalに
というのがある意味の理想だと思います。しかし、
・誤差が出るか出ないかの判定が面倒でパフォーマンス低下
・どのみち、誤差が出てしまう場面の方が圧倒的に多そう
・結果ほとんどBigDecimal演算になり、遅くなる
・誤差がそのまま出る言語処理系がほとんどだから、「驚き」が
「常識」になっているユーザも多いので、元からあんまり
正確さを期待されてない
ということで、デフォルトでBigDecimalが多く出るというのは
難しいですよね。
一番簡単そうという理由で、自分はユーザによる明示的な
接尾子案を推します。
「『B』をつけるだけで、小数は正確に計算されるようになります」
なんて、かっこいいと思います。
ただそれは大きな変更になりそうなので、あくまでも1.9以降、と
いう事になってしまうと思います。
それでつなぎとして、String#to_d でも用意しませんか?
Rational には Integer#to_r もあることですし。
BigDecimal("1.23")
と比べたら、
"1.23".to_d
のタイプ数は 5-12=-7、実に6割弱減です! (^^)
ということで、以下パッチです。ちなみにto_dという名前は、
既存の bigdecimal-rational から採りました。
# ついでに Fixnum#to_d と Bignum#to_d もつけてます。
Index: bigdecimal.c
===================================================================
RCS file: /src/ruby/ext/bigdecimal/bigdecimal.c,v
retrieving revision 1.9
diff -u -p -r1.9 bigdecimal.c
--- bigdecimal.c 1 Jul 2003 14:14:18 -0000 1.9
+++ bigdecimal.c 10 Jul 2003 05:39:34 -0000
@@ -1253,6 +1253,43 @@ BigDecimal_sincos(VALUE self, VALUE nFig
return obj;
}
+static VALUE
+str_to_d(VALUE str)
+{
+ ENTER(1);
+ Real *a;
+
+ SafeStringValue(str);
+ GUARD_OBJ(a, VpCreateRbObject(strlen(RSTRING(str)->ptr) + VpBaseFig() +
1,
+ RSTRING(str)->ptr));
+ return ToValue(a);
+}
+
+static VALUE
+fix_to_d(VALUE num)
+{
+ ENTER(1);
+ Real *a;
+ char szD[128];
+
+ sprintf(szD, "%d", FIX2INT(num));
+ GUARD_OBJ(a,VpCreateRbObject(VpBaseFig() * 2 + 1, szD));
+ return ToValue(a);
+}
+
+static VALUE
+big_to_d(VALUE x)
+{
+ ENTER(1);
+ Real *a;
+ VALUE bg;
+
+ bg = rb_big2str(x, 10);
+ GUARD_OBJ(a,VpCreateRbObject(strlen(RSTRING(bg)->ptr) + VpBaseFig() +
1,
+ RSTRING(bg)->ptr));
+ return ToValue(a);
+}
+
#ifdef USE_MUTABLE_METHOD
/**** Following methods are all MUTABLE and not currently activated. ****/
@@ -1450,6 +1487,11 @@ Init_bigdecimal(void)
rb_define_method(rb_cBigDecimal, "finite?", BigDecimal_IsFinite, 0);
rb_define_method(rb_cBigDecimal, "truncate", BigDecimal_truncate, -1);
rb_define_method(rb_cBigDecimal, "_dump", BigDecimal_dump, -1);
+
+ /* misc utility methods */
+ rb_define_method(rb_cString, "to_d", str_to_d, 0);
+ rb_define_method(rb_cFixnum, "to_d", fix_to_d, 0);
+ rb_define_method(rb_cBignum, "to_d", big_to_d, 0);
#ifdef USE_MUTABLE_METHOD
rb_define_singleton_method(rb_cBigDecimal, "assign!",
BigDecimal_assign, 3);
---
斎藤ただし