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

In [ruby-math :00603 ] the message: "[ruby-math:00603] Re: int / int -
> ? ", on Aug/25 12:17(JST) 正木 功 writes:

>正木です。

>|  純粋数(int, rational, real, ...)
>|  疑似数(float)
>|  それらの数組み合わされる数(complex, ...)
>|  数以外(Matrix, Vector, 多項式...)
>|
>|ってわけて, 純粋数だけ相互変換できるようにすればよいと思いますが? 
>
>最近の石塚さんの意見にはほぼ賛成ですが、

あ. 一応断っておきますが、ここまではまだ主張していません。

>ここは少し違います。
>  純粋数(natural, int, rational, real, complex)
>  疑似数(float, BigFloat)
>  それ以外の数(quaternion,Ideal, ...)
>  数以外(Matrix, Vector, 多項式...)
>
>数学的には complex まで考えて初めて完結した体系が作れます。
>整数に関する問題であっても複素数なしでは解けないものはたくさんあります。

それ以外の数をわざわざ分たのは、それらって純粋数と疑似数の組合わせになる
ことがあるので、区別しました。Complex(純粋数,純粋数)は純粋数として扱って
よいと思います。Complex(疑似数,純粋数)...は疑似数扱いでしょう。

>Ruby では仕様が気に入らなければ自分で書き直せばいいだけのことですから、
>(Rational#inspect も以前から a/b にしています)
>元の仕様はどうでもいいような気がしてきました。

うーん. そういう立場もあるのですが、わたしは一応Rubyを使っているのであっ
て、Ruby上に構築された数値処理システムを扱う立場ではないので、最低限の部
分は標準として入って欲しいんですね。

>というのはやはり言い過ぎなので、一つ提案ですが、
>(mathn.rb から不必要な部分を取り除いたような)仕様設定のための File を
>用意しておいたらどうでしょうか?
>そのなかで
>class Fixnum
>  alias / rdiv
># alias / div
>end
>class Rational
>  Unify = true
>  def inspect
>    ....
>  end
>end
>などとしておいて、例えば
>  Unify = false
>と書き換えれば
>1/3+2/3 => Rational(1,1)
>となることなどを説明しておいたらどうでしょう?

というか, ここまでの部分を最低でも標準化したいのですが...

ここまで標準化してあれば、mathn(または正木さんの考えているようなさらに先
のもの)をrequireすると、既存ライブラリの振る舞いが変ってしまうという問題
はほとんどなくなるので...

>|int/int -> rational の問題とReal/BigFloat が必要って話は独立のような気が
>|するのですが?
>
>私もこれは全然別の問題と思います。
>
>Real class は私のような素人ではなくて、ちゃんとした人が作れば、ある程度
>実用的なものができると思うので、皆さん作ってみませんか?
>Real の仕様については更に好みがわかれそうなので、選択肢が多ければ多い程
>良いと思います。
>私の Real class でも速度が遅い点を除けばそれなりに動いています。

Mathematicaとかにもこういう数値ってあるのでしたっけ? 実数は目で見える形
で表現できないので、式で表現するのが普通なのかなって気がしていますが? た
とえば、

  x**2 = 2

となる x がsqrt(2) ですので、xは上式で定義しておいて、必要に応じて目で見
える形で表現すると. 

別にRealクラスに対して文句を言っているわけではなくて、一般的にはどうなの
かなぁ? とお聞きしたかったんですけどね.

__
..............................石塚 圭樹@日本ラショナルソフトウェア...
----------------------------------->> e-mail: keiju / rational.com <<---