大体思ったような動きになってきた

ResidueFuncで画面出力できるようにしておこう.⇒かなり大量のダンプが出るが,あとで削ればよい.All Matrixでも出せるようになった.かなり時間が掛かる.砂時計が出ていない.bottomlineも実行されていない.⇒処理と描画を切り分けたい.

Nの素因数分解がまったく表示されなくなった.⇒何気に止めていた.DispParameterに移しておこう.⇒TextBox8に書き込みしているところが消えている.どこかでうっかり削ってしまったようだ.⇒補充した.

Nが素数のインジケータも落ちている.⇒DispParametorでは引数でφを受け取っているが,おそらく,対象が違うのだろう.安全のため,関数内で計算するようにしておこう.

ResidueTestではNの因数,φ,ψなどが更新されていない.All Matrixでは何も(Kも)更新されない.⇒時間がかかり過ぎるのでダンプを減らす.⇒Kは更新されているが,ψなど変化しない.φはDispParameterで更新している.⇒TestMatrixでnum0.textを上書きしてValueChangedを実行するようにした.⇒φやψは更新されるようになったが,cycle値がまったく変化しない.⇒TestMatrixの中で直接更新しておこう.

PrimeTest, InvertTestで(φ, K)が変化するのはおかしい.この値はDispParametor2で更新している.φ(N)とketaのGCMを表示している.ketaというのはInvertFuncの戻り値で剰余数列の周期を意味する.この値は暫定的に#としてラベル付けしておこう.

PowerResidueでN=123, K=7のとき,17 % 7 → {3, 2, 6, 4, 5, 1, 3, }と表示されるのはおかしい.123%7=4であり,商が17になっている.ResidueFuncが2回呼び出されている.確かに,DispModPowではQを対象数としてResidueFuncを実行している.⇒DispModPowの中でResidueFuncを実行するというのは,つい最近の修正だ.しかし,明らかに誤っている.DispModPowはValueChangedの中で呼び出されているので,それ以外の場では不要なのではないか?

確かにValueChangedでは剰余数列は更新されない.ResidueFuncの呼び出しが必要だ.ValueChanged→ResidueFuncの部分をルーチン化しておこう.ただし,一つ問題がある.TestMatrixではdrop()とcycle()という配列を管理している.これは,サイズがKの配列でドロップ項数と剰余数列周期を格納している.これはDumpMatrixの中で使われている.modulo3.Clickでは包括的な検定になっているので,配列を整備してもよいが,GoButtonは単発なのであまり適切ではない.Kが更新されたときつねにRedimするようにしておけば,実害はないと思われるが…

多少余分なコストは掛かってしまうが,それが分かり易いのではないか?⇒ResidueFuncProとして実装することにする.ResidueFuncProではs1という配列も使っている.これはTestMatrixの中でRedimしている.この論理は外してTestMatrixに戻しておこう.⇒どうも,やはり,ValueChangedだけでは不十分だ.ValueChangedの代わりにResidueFuncProを呼び出すしかない.しかし,それも若干やり過ぎのような感じもする.ValueChangedは8箇所から呼び出されている.

この意味では,確かにValueChangedの中からResidueFuncを呼び出すという方が理に適っている.ResidueFuncProを呼び出しているのは,今のところModulo3.ClickとTestMatrixだけなので,これらからはValueChangedを呼び出さないとすればよいのだが… ⇒GoButtonが落ちていた.それでも3箇所だ.⇒ValueChangedProというのを作って,ValueChangedとResidueFuncProを呼び出すようにしてみた.

上の3つを除き,ValueChangedをすべてValueChangedProに置き換える必要があるかどうかは,吟味する必要がある.剰余数列周期に影響しないパラメータの場合は,ValueChangedのままの方がよい.少なくともBの書き換えは影響しないはずだ.⇒結局,ValueChangedは5箇所に残ることになった.大体思ったような動きになってきた.もう大きな誤りはないのではないか?ブラッシュアップの段階と言ってもよい.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA