いよいよ,「久留島喜内の道具箱」公開の機は熟しつつあるが,マニュアルの方はさっぱり捗っていない.そろそろ散歩も始めなくてはならないのだが… あまり暑くならないうちに始めないとワゴンに乗り損なってしまう… 原始根の個数というのが出てきた.φ(γ-1)という数になっているようだ.原始根の列挙と並んで取り上げてもよいかもしれない.ともかく,レンジオーバーでBブロックが処理できない場合のエラーメッセージを出せるようにしておこう.エラーコードはInvertFuncで出している ERROR_POWERRESIDUEFUNC_OVERFLOWだ.
いや,メッセージはInvertFuncですでに出しているはずだ.いや,違う.このエラーを出しているのはPowerResidueFuncだ.出力パネルに残しているテキストの長さが短か過ぎる.⇒MaxOutput は現在 30000 に設定されている.十分な長さのように思われるのだが… 8万文字に増加させてようやく冒頭のエラーメッセージが見えるようになった.この小さいパネルにそんなに多くの文字が詰まっているようには見えないのだが,wordwrapオンにしても大したボリュームには感じられない.エラーで戻ったときの動作を一通りチェックしておこう.
- ERROR_STOPBUTTON_PRESSED 中止ボタンが押された PowerResidueFunc→
- ERROR_TOBCD_OVERFLOW ToBCDで配列サイズがMAXARRAYSIZEを超えた ToBCD→
- ERROR_MAKERECURSIONUNIT_ABORT 桁数オーバーでアボート MakeRecursionUnit→
- ERROR_MAKERESIDUCYCLE_OVERFLOW 桁数がMAXARRAYSIZEを超えた MakeResidueCycle→
- ERROR_POWERRESIDUEFUNC_OVERFLOW 除数Θ上限オーバー PowerResidueFunc→
完全とは言えないが一応整備されたことにしておこう.
▲α=9223372036854775807という設定でSeed Testを実行しようとして,エラーが発生した.どこでオーバーフローしているのかがはっきりしない.ループ変数 i が整数型のためと思われる.⇒BigIntegerに変更した.問題なく動作するようになった.⇒ResidueTestにも同様の問題があるので,修正しておいた.
▲上記設定でResidueTestを実行して例外が発生した.α値の上限_MAX_INT64を越えようとしたためだろう.⇒動作範囲を_MAX_INT64に限定するようにした.
▲BuildMatrixでオーバーフローが発生した.⇒RowTopに行先頭番号を入れようとしてオーバーフローしている.⇒MAXSQUARESIZEを超えないように調整した.
中止ボタンが押されたときにはメッセージを出すことにしてみよう.PowerResidueFuncのERROR_STOPBUTTON_PRESSEDに仕掛けてみたが効かない.⇒中止ボタンが押されたタイミングで出すことにする.
▲Matrix Test で何も出力されていない.⇒verboseで止めてあった.silentに切り替えたが,ダンプ量が多いので一部verboseに戻す.出力テキストは一定の文字数で折り返すようになっているので,WordWrapオフでも行数が増えてしまう.また格納文字数を増やすと出力が極端に遅くなるので,32767という現状のままとする.MaxOutText定数でこの設定の数字を超えても効果がない.BuildMatrix中の情報をダンプした方がよい.また,砂時計がテストの途中で落ちてしまう.