[#20525] [BigDecimal] changing rule of coerce — "Tadashi Saito" <shiba@...2.accsnet.ne.jp>

斎藤です。

44 messages 2003/07/07
[#20527] Re: [BigDecimal] changing rule of coerce — "Shigeo Kobayashi" <shigeo@...> 2003/07/07

小林です。

[#20528] Re: [BigDecimal] changing rule of coerce — matz@... (Yukihiro Matsumoto) 2003/07/07

まつもと ゆきひろです

[#20570] Marshal upgrade — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

41 messages 2003/07/09
[#20575] Re: Marshal upgrade — Masatoshi SEKI <m_seki@...> 2003/07/09

咳といいます。

[#20583] Re: Marshal upgrade — matz@... (Yukihiro Matsumoto) 2003/07/09

まつもと ゆきひろです

[#21016] Re: Marshal upgrade — matz@... (Yukihiro Matsumoto) 2003/07/30

まつもと ゆきひろです

[#20804] add library — nobu.nakada@... 2003/07/23

なかだです。

[#20580] add library(Re:ruby-dev:20570) — たむらけんいち <sgs02516@...>

たむらです。

30 messages 2003/07/09
[#20656] Re: add library — "NAKAMURA, Hiroshi" <nakahiro@...> 2003/07/14

なひです。

[#20658] Re: add library — GOTOU Yuuzou <gotoyuzo@...> 2003/07/14

In message <038d01c349cb$eaad71d0$93222fc0@sarion.co.jp>,

[#20659] Re: add library — matz@... (Yukihiro Matsumoto) 2003/07/14

まつもと ゆきひろです

[#20660] Re: add library — GOTOU Yuuzou <gotoyuzo@...> 2003/07/14

In message <1058171960.400840.10041.nullmailer@picachu.netlab.jp>,

[#20661] Re: add library — Takahiro Kambe <taca@...> 2003/07/14

話をそらしてしまうかもしれませんが、

[#20665] Re: add library — GOTOU Yuuzou <gotoyuzo@...> 2003/07/14

In message <20030714.183104.09092354.taca@back-street.net>,

[#20666] Re: add library — Takahiro Kambe <taca@...> 2003/07/14

In message <20030715.013655.424936247.gotoyuzo@kotetsu.does.notwork.org>

[#20668] Re: add library — GOTOU Yuuzou <gotoyuzo@...> 2003/07/14

In message <20030715.025907.26217115.taca@back-street.net>,

[#20750] Re: add library — Takahiro Kambe <taca@...> 2003/07/21

In message <20030715.051853.968499478.gotoyuzo@kotetsu.does.notwork.org>

[#20751] Re: add library — GOTOU Yuuzou <gotoyuzo@...> 2003/07/21

In message <20030721.163444.09092937.taca@back-street.net>,

[#20655] frozen ThreadGroup — Hidetoshi NAGAI <nagai@...>

永井@知能.九工大です.

26 messages 2003/07/14
[#20671] Re: frozen ThreadGroup — matz@... (Yukihiro Matsumoto) 2003/07/14

まつもと ゆきひろです

[#20673] Re: frozen ThreadGroup — Hidetoshi NAGAI <nagai@...> 2003/07/15

永井@知能.九工大です.

[#20676] Re: frozen ThreadGroup — matz@... (Yukihiro Matsumoto) 2003/07/15

まつもと ゆきひろです

[#20677] Re: frozen ThreadGroup — Hidetoshi NAGAI <nagai@...> 2003/07/15

永井@知能.九工大です.

[#20681] Re: frozen ThreadGroup — matz@... (Yukihiro Matsumoto) 2003/07/15

まつもと ゆきひろです

[#20690] portable(?) UserID/GroupID control (Re: frozen ThreadGroup) — Hidetoshi NAGAI <nagai@...> 2003/07/16

永井@知能.九工大です.

[#20712] Re: portable(?) UserID/GroupID control — Hidetoshi NAGAI <nagai@...> 2003/07/17

永井@知能.九工大です.

[#20735] Re: portable(?) UserID/GroupID control — matz@... (Yukihiro Matsumoto) 2003/07/20

まつもと ゆきひろです

[#20736] Re: portable(?) UserID/GroupID control — Hidetoshi NAGAI <nagai@...> 2003/07/20

永井@知能.九工大です.

[#20737] Re: portable(?) UserID/GroupID control — matz@... (Yukihiro Matsumoto) 2003/07/20

まつもと ゆきひろです

[#20748] [BigDecimal] exception handling — "Tadashi Saito" <shiba@...2.accsnet.ne.jp>

斎藤です。

20 messages 2003/07/21

[#20765] Re: [ruby-cvs] ruby/lib: * lib/tmpdir.rb: new library to get temporary directory path, — WATANABE Hirofumi <eban@...>

わたなべです。

9 messages 2003/07/21

[#20780] complex.rb — Masahiro TANAKA <masa@...>

complex.rb についての修正案を[ruby-math:00543]で提案しましたが、その後

25 messages 2003/07/22
[#20782] Re: complex.rb — matz@... (Yukihiro Matsumoto) 2003/07/22

まつもと ゆきひろです

[#20900] Re: complex.rb — Masahiro TANAKA <masa@...> 2003/07/25

At Tue, 22 Jul 2003 17:30:31 +0900, Yukihiro Matsumoto wrote:

[#20905] Re: complex.rb — matz@... (Yukihiro Matsumoto) 2003/07/25

まつもと ゆきひろです

[#20906] Re: complex.rb — keiju@... (石塚圭樹) 2003/07/25

けいじゅ@いしつかです.

[#20810] Rational 始めました。 — Shin-ichiro HARA <sinara@...>

原です。

13 messages 2003/07/23
[#20876] Re: Rational 始めました。 — keiju@... (石塚圭樹) 2003/07/24

けいじゅ@いしつかです.

[#20954] ruby 1.8.0 preview5 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

15 messages 2003/07/28

[#20957] [BigDecimal] conflict between Numeric#div and BigDecimal#div — "Tadashi Saito" <shiba@...2.accsnet.ne.jp>

斎藤です。

29 messages 2003/07/28
[#20960] Re: [BigDecimal] conflict between Numeric#div and BigDecimal#div — Masahiro TANAKA <masa@...> 2003/07/28

At Mon, 28 Jul 2003 18:26:20 +0900, Tadashi Saito wrote:

[#20962] Re: [BigDecimal] conflict between Numeric#div and BigDecimal#div — matz@... (Yukihiro Matsumoto) 2003/07/28

まつもと ゆきひろです

[#20990] Re: [BigDecimal] conflict between Numeric#div and BigDecimal#div — Masahiro TANAKA <masa@...> 2003/07/29

At Mon, 28 Jul 2003 21:16:08 +0900, Yukihiro Matsumoto wrote:

[#20992] Re: [BigDecimal] conflict between Numeric#div and BigDecimal#div — matz@... (Yukihiro Matsumoto) 2003/07/29

まつもと ゆきひろです

[ruby-dev:20547] Re: [BigDecimal] renaming proposal

From: "Tadashi Saito" <shiba@...2.accsnet.ne.jp>
Date: 2003-07-08 06:15:05 UTC
List: ruby-dev #20547
斎藤です。

----- Original Message ----- 
From: "Shigeo Kobayashi" <shigeo@tinyforest.gr.jp>
Sent: Monday, July 07, 2003 4:25 PM
Subject: [ruby-dev:20524] Re: [BigDecimal] renaming proposal


> そうですね、そう思います。 いずれにせよ、BigFloat -> BigDecimal
> への移行は若干の書き換えが必要になるので、思い切ってwarning
>  も出さないことにしてあります(これでいいと思います)。

了解しました。

引用が前後しますが、

> > 既に上の4つの関数とexpについて、Rubyで書き直してみました。
> おおっ! そのうちライブラリとして公開していただけるといいですね。

> > ・[ruby-dev:20448] での
> >  > 「Ruby + bigdecimal.dll(so) 」だけを配布したい場合も
> >  という発言から察するに、ユーザが明示的に
> >  「require 'bigdecimal-math'」ということになるのでしょうか?
> ということです。

ええと自分は、元の小林さんの発言

> ただ、他にもありますが、こういったものはRubyスクリプト
> の形式で出したいですね。どなたか、sin/cos/log/sqrt等を
> Rubyで書いてくれる人がいるとうれしいですね。

から

「現状のbigdecimal.cの数学関数の部分は削除して、Rubyで
 書き直し、それを標準添付の一部としたい」

ということだと思ったのですが、そうではない、ということでしょうか。
数学関数を標準添付したくないということですか?

> > ・既存のCの実装を捨てて(ということですよね?)、Rubyで書き直す
> >  目的というのは何でしょうか? 保守しやすいとか、それ自体が
> >  サンプルになるというくらいの意味でしょうか。
> すべて、その通りです。ものによりますが、BigDecimal のように

ここは、分かりました。

> >  手元で簡単なテストを作ったところ、どちらの基準でも何らかの
> >  関数が正しくない数値を返しました。
> 具体的な内容と結果を教えてもらえますか?

はい。添付したスクリプトを走らせると、必ずNGになります。
(もっとうまい書き方があるのかもしれませんが…)

数学関数に、n桁の精度での解 x とその倍の精度での解 y を
計算させ、y の n桁までは正しいものと仮定します。
そして、x と y のn桁までを比較すると、いずれかの
関数で x == y が成り立たなくなります。
「unless s_ok.truncate(n) == s.truncate(n)」の truncate を
round にしても同様でした。
具体的には、引数に100を与えて走らせると

e: 44:
ok: 0.271828182845904523536028747135266249775724700E1
ng: 0.271828182845904523536028747135266249775724710E1

exp: 8:
ok: 0.738905600E1
ng: 0.738905610E1

ということが起き、truncateをroundにしてからだと

e: 64:
ok: 0.27182818284590452353602874713526624977572470936999595749669676280E1
ng: 0.27182818284590452353602874713526624977572470936999595749669676270E1

exp: 30:
ok: 0.738905609893065022723042746058000E1
ng: 0.738905609893065022723042746057000E1

となります。引数で700桁くらいを指定すると、piもそうなります。

> > ・やはり数学関数はMathモジュール以下に定義すべきだと
> >  思うのですが、そうしていいでしょうか?
> >  (もちろん互換性を保った上で、です)
> えっと、作成中の「数学関数スクリプト」ということですよね?

いえ、違います。
手元で作ったスクリプトはもちろんそうしてありますが、
BigDecimal自体について言っているつもりでした。
HTMLのマニュアルの方で小林さんが暗におっしゃっている通り ^^;
    a.sqrt(n)
では「aの平方根」とは読みずらいと思うからです。
それ以上に、既存のものとの親和性という点からも
   Math.sqrt(a, n)
とできたほうが良いと思います。
(手元のスクリプトでは、第一引数がBigDecimalの時に限り
第二引数を認めるようにしています)

---
斎藤ただし

Attachments (1)

testmathf.rb (789 Bytes, text/x-ruby)
require 'bigdecimal'

raise "usage: #{$0} number-of-digit" unless ARGV.size == 1

N = ARGV[0].to_i
$ok = true

def testfunc(name)
  correct = yield(2*N)
  1.upto(N) do |i|
    s_ok = correct
    s = yield(i)
    n = i - s.exponent 
    unless s_ok.truncate(n) == s.truncate(n)
      print "#{name}: #{i}:\n",
            "ok: #{s_ok.truncate(n)}\nng: #{s.truncate(n)}\n\n"
      $ok &&= false
      return
    end
  end
  print "#{name}: OK\n\n"
end


two = BigDecimal.new("2")
funcs = [
  ['e', proc{|i|BigDecimal.E(i)}],
  ['pi', proc{|i|BigDecimal.PI(i)}],
  ['sqrt', proc{|i|two.sqrt(i)}],
  ['exp', proc{|i|two.exp(i)}],
  ['sin', proc{|i|two.sincos(i)[0]}],
  ['cos', proc{|i|two.sincos(i)[1]}]
]

funcs.each do |f|
  testfunc(f[0], &f[1])
end

print "\ntest #{$ok ? "OK" : "NG"}\n"

In This Thread