いけがみです.01問題と並行しまして.

有限体のクラスがあると,
 . 有限体上の楕円曲線暗号の実装で遊ぶ
 . 有限体上の誤り訂正符号の実装で遊ぶ
 . 有限体と整数論で遊ぶ
などができるので僕にとっては大変面白いです.
# モチベーションはこれではあがらないだろうか

一般の数式を記述するのに ruby は向いていると思うんですがどうでしょう.
Polynomial, Matrix と組めたら
ぐんと表現力の強いソフトウエアになると思うのですけれど.

有限体クラスを実装する上で僕がつまっているのは,
Zp[X]/(f(X)) の
 . *
 . / (というか inverse)
です.有限体の演算では,割り算を定義から求めるより,
逆元をユークリッドの互除法で求めて積を計算するほうが早いです(たぶんね).
(もっとも「生成元と巾」というデータ構造にすれば,
 積の実装は簡単になるかわりに和の実装がむずかしくなります)
積は,Zp[X]の中で積をとったあとf(X)でmoduloをとれば,
とりあえず実装できそうですが,これは効率が悪いんじゃないかしらん.
もうちょっと実装で遊んでみます.

児玉さん:
> ただ, 値として持たせるのは問題があって,
> 1 を持たせてしまって,
> これを足すと 任意に整数を作れてしまうので
ああ,なるほど.1 と同一視するのはまずい.そっかー.
「同一視」と曖昧な表現を使いましたが,
有限体の零元を整数 0 のオブジェクトにしちゃうと
整数クラスと混じっちゃって 0.succ (とか 0.succ.succ)の意味が
変わっちゃったりするので困るかもしれないなーと,考えはじめました.
--
池上 大介
Daisuke IKEGAMI <daisu-ik / is.aist-nara.ac.jp>
奈良先端科学技術大学院大学 情報科学研究科
情報処理学専攻 情報基礎学講座 関研究室