[ruby-list:50258] 有理数型Rationalクラスで扱える限界値は?
From:
Yoshiizumi <yoshi@...>
Date:
2015-11-24 12:49:07 UTC
List:
ruby-list #50258
よしいずみといいます。
rubyの有理数型を扱う Rational クラスと、複素数 Complex クラスと2項定
理に関連して教えていただければと思ってメールしました。
数学関連で2項定理を扱うためのクラス Binomer をつくってみました。
有理数まで対応させました。複素数には対応していません。
関係サイト: http://cup.sakura.ne.jp/math/binomer.htm
Binomerクラスを使うと、たとえば、アークサインの級数展開を用いて円周率
を算出するプログラムを下のように書けます。
require "binomer"
arcsin = Binomer.new(-Rational(1,2), 50, -2).integral # 50項まで展開
puts arcsin.calc(0.5) * 6.0 # => 3.141592653589794
puts arcsin.cx.last # 最後の「項」を出力
# => 12611418068195524166851562157/16004088827881396193895877967872x^1
01
教えていただきたいのは、Rationalクラスの分子と分母が巨大な数になっても
動作していることは分かりますが、どのくらいまで大きな数を扱えるかというこ
とです。
その限界値を知る方法というのはあるのでしょうか。あるいは、限界値という
のは特にないのでしょうか。
限界値があるなら、それを超えた時に警告メッセージを出すようにしたいと思
っています。
ちなみに、私が使っている ruby のバージョンは下記です。
ruby 2.1.6p336 (2015-04-13 revision 50298) [i386-mingw32]
もう一つは、rubyで、複素数まで拡張した2項定理用のクラスが既にあるかど
うかということです。
私がインターネット検索したところでは見つけられなかったのですが、「既に
あるよ」という情報をお持ちの型がいましたら、おしえていただければありがた
いです。
よろしくお願いします。