[#5809] mod_ruby-0.0.7 — Shugo Maeda <shugo@...>

前田です。

63 messages 1999/03/01
[#5845] Re: mod_ruby-0.0.7 — Shugo Maeda <shugo@...> 1999/03/01

前田です。

[#5860] Re: mod_ruby-0.0.7 — moochan <moochan@...> 1999/03/02

moochan です.

[#5892] Re: mod_ruby-0.0.7 — Shugo Maeda <shugo@...> 1999/03/02

前田です。

[#5855] Re: mod_ruby-0.0.7 — Shugo Maeda <shugo@...> 1999/03/01

前田です。

[#5919] Re: mod_ruby-0.0.7 — Shugo Maeda <shugo@...> 1999/03/03

前田です。

[#5895] [REQ] 中置の def — EGUCHI Osamu <eguchi@...>

えぐち@エスアンドイーです。

18 messages 1999/03/02
[#5907] Re: [REQ] 中置の def — EGUCHI Osamu <eguchi@...> 1999/03/03

えぐち@エスアンドイー です。

[#5965] Re: Precision in Mathematica (Re: Bigfloat) — keiju@... (石塚圭樹 )

けいじゅ@日本ラショナルソフトウェアです.

28 messages 1999/03/04
[#5981] Re: Precision in Mathematica (Re: Bigfloat) — gotoken@... (GOTO Kentaro) 1999/03/04

ごとけん

[#6053] Re: Precision in Mathematica (Re: Bigfloat) — matz@... (Yukihiro Matsumoto) 1999/03/06

まつもと ゆきひろです

[#6150] Re: Precision in Mathematica (Re: Bigfloat) — matz@... (Yukihiro Matsumoto) 1999/03/09

まつもと ゆきひろです

[#6159] Re: Precision in Mathematica (Re: Bigfloat) — EGUCHI Osamu <eguchi@...> 1999/03/09

えぐち@エスアンドイー です。

[#6197] Re: Precision in Mathematica (Re: Bigfloat) — keiju@... (石塚圭樹 ) 1999/03/10

けいじゅ@日本ラショナルソフトウェアです.

[#6203] Re: Precision in Mathematica (Re: Bigfloat) — EGUCHI Osamu <eguchi@...> 1999/03/10

えぐち@エスアンドイー です。

[#6224] Re: Precision in Mathematica (Re: Bigfloat) — keiju@... (石塚圭樹 ) 1999/03/11

けいじゅ@日本ラショナルソフトウェアです.

[#6238] Re: Precision in Mathematica (Re: Bigfloat) — EGUCHI Osamu <eguchi@...> 1999/03/11

えぐち@エスアンドイー です。

[#6302] Re: Precision in Mathematica (Re: Bigfloat) — keiju@... (石塚圭樹 ) 1999/03/12

けいじゅ@日本ラショナルソフトウェアです.

[#6304] Re: Precision in Mathematica (Re: Bigfloat) — EGUCHI Osamu <eguchi@...> 1999/03/12

えぐち@エスアンドイー です。

[#5970] [REQ] variable of regex — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

43 messages 1999/03/04

[#6090] Thread#kill — Shugo Maeda <shugo@...>

前田です。

24 messages 1999/03/08

[#6328] Re: Ruby 1.3.1-990315 — WATANABE Hirofumi <watanabe@...>

わたなべです.

41 messages 1999/03/15
[#6329] Re: Ruby 1.3.1-990315 — matz@... (Yukihiro Matsumoto) 1999/03/15

まつもと ゆきひろです

[#6331] Re: Ruby 1.3.1-990315 — Wakou Aoyama <wakou@...> 1999/03/15

青山です。

[#6338] Re: Ruby 1.3.1-990315 — matz@... (Yukihiro Matsumoto) 1999/03/16

まつもと ゆきひろです

[#6347] Re: Ruby 1.3.1-990315 — Wakou Aoyama <wakou@...> 1999/03/16

青山です。

[#6348] Re: Ruby 1.3.1-990315 — matz@... (Yukihiro Matsumoto) 1999/03/16

まつもと ゆきひろです

[#6350] Re: Ruby 1.3.1-990315 — Wakou Aoyama <wakou@...> 1999/03/16

青山です。

[#6353] Re: Ruby 1.3.1-990315 — matz@... (Yukihiro Matsumoto) 1999/03/16

まつもと ゆきひろです

[#6354] Re: Ruby 1.3.1-990315 — Wakou Aoyama <wakou@...> 1999/03/16

青山です。

[#6434] Time#+ — Koji Arai <JCA02266@...>

新井です。

19 messages 1999/03/22
[#6442] Re: Time#+ — matz@... (Yukihiro Matsumoto) 1999/03/22

まつもと ゆきひろです

[ruby-dev:5811] Re: Precision in Mathematica (Re: Bigfloat)

From: EGUCHI Osamu <eguchi@...>
Date: 1999-03-01 04:07:42 UTC
List: ruby-dev #5811
えぐち@エスアンドイー です。

>>> In message [ruby-dev:5776] Precision in Mathematica (Re: Bigfloat)
    On Fri, 26 Feb 1999 20:18:35 +0900, gotoken@math.sci.hokudai.ac.jp (GOTO Kentaro) said:

gotoken> ごとけんです
gotoken> 
gotoken> 遅くなってすみません.とりあえず,Mathematica に関する精度の
gotoken> 取り扱いに関する報告です.

詳細な調査、ご苦労さまです。

gotoken> さきに僕の結論をいっておくと,我々の目指す BigFloat は以下で
gotoken> 紹介する Real に相当するのがよく,これはオブジェクトごとに
gotoken> 精度(有効桁数)をもち,演算の結果は自動的に調節されるべきです.

(Bigfloatは)オブジェクト毎に精度を持つ必要が有る、
と言う点では、ほぼ合意が得られたようですね。

gotoken> んが,この精度の実現を厳密に行うならば実装は複雑です.とは
gotoken> いうものの妥協案の提示も難しそうです.

演算後に得られた値に対しての精度の計算方法が
問題になりそうだと言う事ですね。

gotoken> このような精度概念を考慮した ruby の Precision と Bigfloat の
gotoken> 全体像はまだ考え終ってないのでのちほど.

これは、ruby の型機構との兼ね合いから、
大変革を許容するかどうかのむづかしい判断になりますね。

gotoken> 0. 型と評価
...
gotoken>   Mathematica は与えられた表現を可能な限り知っている規則
gotoken>   で変形し続けるシステムで,この変形のことを評価と言います.
gotoken>   変形できなくなった時点でそれを値として返します.

これに対しての意見は、山程有りますが、
今の時点での意見を要約すると、

  パターンによる変形/変換は Bigfloat ではなく
  ほかのクラスでの実現になるべきだ。

  Bigfloat は、そのクラスの存在と整合すれば良い。

と思います。

gotoken> 1. 組み込みの数
gotoken> 
gotoken>   Mathematica には組み込みの4つの数の型があります.
gotoken>   Real は任意精度であり無限精度ではありません.
gotoken> 
gotoken>    |  Integer 任意の大きさの整数
gotoken>    | Rational integer/integer で表せる有理数
gotoken>    |     Real 任意の精度の近似値で表された実数
gotoken>    |  Complex number + number I で表現される複素数

任意精度で有る事が、ポイントですね。

gotoken> 2. 定数記号
gotoken> 
gotoken>   この他に Simbol として定義された定数が存在します.
gotoken>   いくつか例を挙げます.ただし虚数単位 I は Complex[0,1] 
gotoken>   で定義されますが,Degree は Pi/180 で定義されているわけ
gotoken>   ではありません.
gotoken> 
gotoken>    |          Pi 円周率
gotoken>    |           E 自然対数の底
gotoken>    | GoldenRatio 黄金比
gotoken>    |      Degree 度からラジアンのへ変換係数 Pi/180
gotoken>    |  EularGamma オイラーのγ
gotoken>    |     Catalan カタラン数

ruby でこれらの定数が、どのクラスに属するかを
考えるだけで、かなりの深い配慮が必要ですね。

 Math, Numeric 、、まさか Object や Kernal ではないし。、、

gotoken> 3. 精度
gotoken> 
gotoken>   Mathematica において,数は有限の精度を持ち,記号は無限の
gotoken>   精度を持ちます.数の精度は変更することができますが,記号
gotoken>   の精度は変更することができません.数の精度には2種類あり
gotoken>   全体の有効桁数を Precision で,小数以下の有効桁数を
gotoken>   Accuracy で得ることができます.桁数は10進でのものです.
gotoken>   Precision の値は一般に0以上ですが,Accuracy は負を返す
gotoken>   こともあります:
gotoken> 
gotoken>     {Precision[10.^67], Accuracy[10.^67]} ==> {16, -51}
gotoken> 
gotoken>   任意精度の取り扱いは以下のように記されています.

実装の事を考えると、@precision と @accuracy を
Bigfloat に持たせると言うのが、だれもが思いつく発想ですよね。
#直観的には Accuracy の符合は逆の方が良いかも。

gotoken>   以下の結果は奇妙にみえますが,有効桁の意味を考えれば妥当です.
gotoken> 
gotoken>     delta = N[3^-30, 20]
gotoken>       ==> 4.856935749618861138 10^-15
gotoken>     Precision[delta] ==> 20
gotoken>     Precision[1 + delta] ==> 34
gotoken> 
gotoken>   不確かな桁の追跡はオブジェクトごとに独立に行われるので,次の
gotoken>   ような結果を得ます.
gotoken> 
gotoken>     Precision[(1 + delta) - delta] ==> 34

これとほぼ同一の問題を、石塚さんと議論しました。[ruby-dev:4826]
#この時は桁上がりについての認識に誤りが有りますが。 ^^;;;

gotoken>   次の例では計算過程で精度が失われています.
gotoken> 
gotoken>     In[1]:= x = N[1 - 10^-30,40]
gotoken>     Out[1]= 0.999999999999999999999999999999000000000
gotoken>     In[2]:= 1+x
gotoken>     Out[2]= 1.999999999999999999999999999999000000000
gotoken>     In[3]:= Precision[%]
gotoken>     Out[3]= 40
gotoken>     In[4]:= (x^2-1)/(x-1)
gotoken>     Out[4]= 2.00000000
gotoken>     In[5]:= Precision[%]
gotoken>     Out[5]= 10
gotoken> 
gotoken>   一般には可能な限り高い精度で計算します.
gotoken> 
gotoken>     N[1-10^-30,40] + N[1-10^-30,50]
gotoken>       ==> 1.999999999999999999999999999998000000000
gotoken>     {Precision[%], Accuracy[%]}
gotoken>       ==> {40, 40}
gotoken> 
gotoken>     N[1-10^-30,40] + 1
gotoken>       ==> 1.999999999999999999999999999999000000000
gotoken>     {Precision[%], Accuracy[%]}
gotoken>       ==> {40, 40}
gotoken> 
gotoken>     1+Pi ==> 1 + Pi
gotoken>     {Precision[%], Accuracy[%]}
gotoken>       ==> {Infinity, Infinity}
gotoken> 
gotoken>     Sqrt[1/7] ==> 1 / Sqrt[1/7]
gotoken>     {Precision[%], Accuracy[%]}
gotoken>       ==> {Infinity, Infinity}

あのぅ、四則の精度の計算方法を教えて下さい ^^;;;

加減算は、
	和(差)の最下位有効桁は、
	最下位有効桁大きい方の最下位有効桁になる
で良い気がしますが、、

乗除算は、
	積(商)の有効数字は、
	有効数字が小さい方の有効数字
になる。

で良いのでしたっけ?
桁上がりって関係有りましたっけ?

gotoken> 5. まとめ
gotoken>   
gotoken>   Mathematica の精度の取り扱いは誤差を含まない範囲で,可能な
gotoken>   限り長い有効桁数を確保するのであって,単に大きな方に合わせる
gotoken>   といったようなルースなものではありません.

大いに、納得致しましたです。

gotoken>                                             機械精度の数だけは
gotoken>   例外で表現が機械精度に感染するとそれ以降を全て機械精度で評価
gotoken>   します.これはパフォーマンスのための選択であり納得できます.

これが、Bigfloat から Float への降格ですね。

	えぐち

In This Thread