2014年1月15日水曜日

ちょっと大きい数の数値計算にMaximaを使ってみました

講義の資料としてMod(モジュロ)表を自作しようとしたのですが、ちょっとハマったので、、、

演算桁には限界がある
コンピュータのことを知っていれば当然の話ですが、コンピュータの演算桁には限界があります。講義資料用に、ab (mod 33)の表を作成しようとしたのですが、Excel でmod関数を使ったら、ちょっと計算しただけで(10乗当たりで)限界になりました。mod関数を使わなかったといても、12乗当たりで限界に。C言語でunsigned long long型を使ってみましたが、ほぼ同様な結果に。

Maximaというソフト
よくネットにアップされているMod表はどうやって作られているのか?通常の数値型を使わずに配列などを用いるなど、工夫をしてプログラムを書けばCでもできるのでしょうけど、ちょっとめんどくさい。
数値計算用のソフトやライブラリを使えば手っ取り早い。代表的なソフトにはMathmaticaがありますが、今回、フリーソフトのMaximaというのがあるので、これを試してみました。ちなみに、Maximaでabのmod表を出力するコードは以下の通りです。
Maxmaでコードを書くのは当然初めてなのでいろいろ試行錯誤しましたが、とりあえずこんな感じでいいかと思います。
個人的にはこういった数値計算ソフトを使うのは初めてでしたが、今度は、CやJavaで数値計算ライブラリを使って試してみようかと思います。



0 件のコメント:

コメントを投稿