画面はエラーを出した状態で止まっている.BuildPowerGrid内だ.
α=123456, Θ=1234567890123456,γ=2,eR = 352731702317570.⇒この関数の中では全ての変数をIntegerとして扱っている.⇒ViewGridは行も列もIntegerの範囲に制限されている.kだけInt64に変更しておいた.⇒二次元配列Tの上限はMAXARRAYSIZEではなく,MAXSQUARESIZEに変更されている.⇒対処したが,まだ別のところでエラーが起きている.TestMatrix内だ.TestMatrixでは異種文字数カウント用にworkという配列を使っているが,ここでオーバーフローが起きている.workはサイズΘで生成しているので,間に合っているはずだが,テーブルTへのアクセスでレンジオーバーになっているのだろう.MAXSQUARESIZEの範囲に限定しなくてはならない.
とりあえず,エラーなしで動作するようになったが,Θ=123456789という順当なサンプルで尋常でない時間が掛かっている.TestMatrixにはいくつもループが入っていて,それぞれがどうしようもないくらい時間が掛かる.いずれにせよ,BuildMatrixには現実的な上限を設けるしかないと思う.MAXSQUARESIZE=&H7FFFでよいのではないだろうか?⇒関数レベルではなく,BuildMatrixないしTestMatrixのコマンドレベルで弾くようにした.Θ自体にも制限を掛けることにしよう.Θの上限はMAXARRAYSIZE=268435455とする.
もうひとつやることがある.マトリックスは本体では基本的に参照されず,ユーザの比較の便のためにだけ表示されているものなので,Θのすべての範囲のテーブルを作る必要はない.本来はべき剰余マトリックスの構造を確認するために,ある程度広い範囲で計算を実施する必要性があったが,横数列・縦数列ともにΘ以下の周期を持つということが確立されたので,もはや無闇に大きなテーブルを作ることは意味がなくなった.
MatrixTestでは全域テーブルが必要だが,それもΘの範囲内で十分なので,それ以上のテーブルを生成する必要はない.BuildMatrixでΘの範囲を超えたマトリックスが要求された場合にのみ大きいテーブルを作ればよい.⇒いや,現状そういう作りになっているのではないか?⇒指定された列数・行数がΘに満たない場合には,Θのフルサイズでテーブルを生成している.この部分は廃止されてよいと思う.
MatrixTestではΘxφの範囲のテストを実施しているが,廃止することにする.しかし,これを廃止してもTestMatrixは相当重い.異種文字数のカウントに相当な時間が掛かっている.BuildMatrixはツールとして常用する部分なので,ここではTestMatrixを実施しないようにする.また,TestMatrixコマンドではΘの範囲をもっと制限した方がよい.
▲BuildMatrixで行/列がΘより小さいときはΘまで拡張するという措置を廃止したところ,BuildPowerGridでエラーになった.topn=25150,leftn=26997で範囲外になっている.生成するテーブル自体オフセットを加味したものになっていなくてはならない.
パラメータの受け渡しが簡単にできるようにMatrixというクラスを新設し,BuildMatrixとTestMatrix,DumpMatrixをこのクラスに移した.⇒移植は簡単にできたが,マトリックスに何も表示されない.Matrixにまだ何も書き込んでいなかった.⇒大体できた.マトリックスも表示されるようになった.⇒まだ,エラーが出ている.
