[#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:20644] [BigDecimal] dup and to_f
斎藤です。
BigDecimalにはBigDecimal#dupが存在しますが、1.8の方針から見ると
望ましくないと思います。
また、BigDecimal#to_fはdupのaliasとして、つまりself(と同じ値)を
そのまま返すよう定義されていますが、やはりFloatを返すべきでしょう。
以上2点を修正してみました。パッチではとりあえず、dupを
USE_MUTABLE_METHODの中に入れる形にして、ドキュメントからは
削除しました。
以下、ドキュメントの修正とまとめてパッチです。小林さん、
取り込んでいただけますでしょうか。
# 値がFloatに収まらないときは、RangeErrorより警告のみの方が
# 良かったりするのでしょうか…エラーにしている箇所が多そう
# だったので、とりあえずそうしてみました。
Index: bigdecimal.c
===================================================================
RCS file: /src/ruby/ext/bigdecimal/bigdecimal.c,v
retrieving revision 1.9
diff -u -r1.9 bigdecimal.c
--- bigdecimal.c 1 Jul 2003 14:14:18 -0000 1.9
+++ bigdecimal.c 12 Jul 2003 17:58:50 -0000
@@ -31,11 +31,13 @@
*/
#include <ctype.h>
+#include <errno.h>
+#include <float.h>
+#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "ruby.h"
-#include "math.h"
#include "version.h"
/* #define USE_MUTABLE_METHOD */
@@ -442,6 +444,30 @@
}
static VALUE
+BigDecimal_to_f(VALUE self)
+{
+ ENTER(1);
+ Real *p;
+ double d, d2;
+ S_LONG e;
+
+ GUARD_OBJ(p,GetVpValue(self,1));
+ VpVtoD(&d, &e, p);
+ if(d == 0.0 || isinf(d) || isnan(d))
+ return rb_float_new(d);
+ errno = 0;
+ d2 = pow(10.0, e);
+ if(errno == ERANGE || (d2 == 0.0 && d != 0.0)
+ || d > DBL_MAX / d2 || d < DBL_MIN / d2) {
+ U_LONG nc = VpNumOfChars(p)+1;
+ char *psz = ALLOCA_N(char, nc);
+ VpToString(p, psz, 0);
+ rb_raise(rb_eRangeError, "BigDecimal %s out of Float range", psz);
+ }
+ return rb_float_new(d*d2);
+}
+
+static VALUE
BigDecimal_induced_from(VALUE self, VALUE x)
{
Real *p = GetVpValue(x,1);
@@ -867,19 +893,6 @@
}
static VALUE
-BigDecimal_dup(VALUE self)
-{
- ENTER(5);
- Real *c, *a;
- U_LONG mx;
- GUARD_OBJ(a,GetVpValue(self,1));
- mx = a->Prec *(VpBaseFig() + 1);
- GUARD_OBJ(c,VpCreateRbObject(mx, "0"));
- VpAsgn(c, a, 1);
- return ToValue(c);
-}
-
-static VALUE
BigDecimal_abs(VALUE self)
{
ENTER(5);
@@ -1348,6 +1361,19 @@
f = VpMult(cv,av,bv);
return INT2NUM(f);
}
+
+static VALUE
+BigDecimal_dup(VALUE self)
+{
+ ENTER(5);
+ Real *c, *a;
+ U_LONG mx;
+ GUARD_OBJ(a,GetVpValue(self,1));
+ mx = a->Prec *(VpBaseFig() + 1);
+ GUARD_OBJ(c,VpCreateRbObject(mx, "0"));
+ VpAsgn(c, a, 1);
+ return ToValue(c);
+}
#endif /* USE_MUTABLE_METHOD */
void
@@ -1417,8 +1443,7 @@
rb_define_method(rb_cBigDecimal, "modulo", BigDecimal_mod, 1);
rb_define_method(rb_cBigDecimal, "remainder", BigDecimal_remainder, 1);
rb_define_method(rb_cBigDecimal, "divmod", BigDecimal_divmod, 1);
- rb_define_method(rb_cBigDecimal, "dup", BigDecimal_dup, 0);
- rb_define_method(rb_cBigDecimal, "to_f", BigDecimal_dup, 0); /* to_f
=== dup */
+ rb_define_method(rb_cBigDecimal, "to_f", BigDecimal_to_f, 0);
rb_define_method(rb_cBigDecimal, "abs", BigDecimal_abs, 0);
rb_define_method(rb_cBigDecimal, "sqrt", BigDecimal_sqrt, 1);
rb_define_method(rb_cBigDecimal, "fix", BigDecimal_fix, 0);
@@ -1457,6 +1482,7 @@
rb_define_singleton_method(rb_cBigDecimal, "sub!", BigDecimal_sub3, 3);
rb_define_singleton_method(rb_cBigDecimal, "mult!", BigDecimal_mult3,
3);
rb_define_singleton_method(rb_cBigDecimal, "div!",BigDecimal_divmod4,
4);
+ rb_define_method(rb_cBigDecimal, "dup", BigDecimal_dup, 0);
#endif /* USE_MUTABLE_METHOD */
}
@@ -3415,6 +3441,21 @@
*d = VpGetDoubleNegZero();
*e = 0;
goto Exit;
+ } else
+ if(VpIsPosInf(m)) {
+ *d = VpGetDoublePosInf();
+ *e = 0;
+ goto Exit;
+ } else
+ if(VpIsNegInf(m)) {
+ *d = VpGetDoubleNegInf();
+ *e = 0;
+ goto Exit;
+ } else
+ if(VpIsNaN(m)) {
+ *d = VpGetDoubleNaN();
+ *e = 0;
+ goto Exit;
}
ind_m = 0;
mm = Min(fig,(m->Prec));
Index: bigdecimal_en.html
===================================================================
RCS file: /src/ruby/ext/bigdecimal/bigdecimal_en.html,v
retrieving revision 1.4
diff -u -r1.4 bigdecimal_en.html
--- bigdecimal_en.html 27 Jun 2003 04:38:57 -0000 1.4
+++ bigdecimal_en.html 12 Jul 2003 17:58:50 -0000
@@ -394,8 +394,7 @@
</BLOCKQUOTE>
<LI><B>to_f</B></LI><BLOCKQUOTE>
-same as dup method.
-creates a new BigDecimal object having same value.
+creates a new Float object having same value.
</BLOCKQUOTE>
</BLOCKQUOTE>
@@ -455,10 +454,6 @@
'0.314E1' is the value,4 is the number of the significant digits,
and 12 is the maximum number of the significant digits
the object can hold.
-
-</BLOCKQUOTE>
-<LI><B>dup</B></LI><BLOCKQUOTE>
-creates a new BigDecimal object having same value.
</BLOCKQUOTE>
<LI><B>sqrt</B></LI><BLOCKQUOTE>
Index: bigdecimal_ja.html
===================================================================
RCS file: /src/ruby/ext/bigdecimal/bigdecimal_ja.html,v
retrieving revision 1.4
diff -u -r1.4 bigdecimal_ja.html
--- bigdecimal_ja.html 27 Jun 2003 04:38:57 -0000 1.4
+++ bigdecimal_ja.html 12 Jul 2003 17:58:51 -0000
@@ -374,8 +374,7 @@
a が Infinity や NaN のとき、i は nil になります。
</BLOCKQUOTE>
<LI><B>to_f</B></LI><BLOCKQUOTE>
-dup と全く同じです。
-同じ値の BigDecimal オブジェクトを生成します。
+同じ値の Float オブジェクトを生成します。
</BLOCKQUOTE>
<LI><B>to_s[(n)]</B></LI><BLOCKQUOTE>
文字列に変換します("0.xxxxxEn"の形になります)。<BR>
@@ -444,9 +443,6 @@
次の4は現在の有効桁数(表示より若干大きいことがあります)、
最後はオブジェクトが取り得る最大桁数になります。
-</BLOCKQUOTE>
-<LI><B>dup</B></LI><BLOCKQUOTE>
-同じ値の BigDecimal オブジェクトを生成します。
</BLOCKQUOTE>
<LI><B>sqrt</B></LI><BLOCKQUOTE>
aの有効桁 n 桁の平方根(n の平方根ではありません)。
---
斎藤ただし