バグ修正なのじぇ
すごいバグを見つけたのじぇ。
今までずっとValue形は16bitだったのだけれどそれを32bitに変更するだけで初期局面の反復進化が2深くなったのじぇ。
int16_tをintにしただけwww修正にして4文字なのじぇww
なんで16bitから32bitに変えるだけでそんなに変わるの??
ビットオーバーフローが原因だと考えているのじぇ。
bitオーバーフローが起こって探索に用いるstatsが壊れていたり、詰みに近い評価値の時にmin(a+b,c)がおかしな値になってしまったりしていたようなのじぇ。
いやー置換表に格納する評価値は16bitなのでValueも16bitで用意しようと思ったのだけれど意外なところに盲点があったものなのじぇ~~
置換表ってなんなの?
置換表は一度訪れた局面をもう一度探索するのを防ぐために用意するテーブルのようなものだよっ!反復進化やアスピレーションサーチ(探索の範囲を前回の探索の値を中心にだんだん広げながら探索する方法)にとって必須の要素だねっ!
キャッシュに置換表要素を整列させる(置換表がキャッシュラインにまたがってしまうと遅くなるらしいので置換表のサイズはキャッシュラインのサイズで割ることのできるサイズでなければならない)ための関係で、置換表に格納する評価値を16bitにするつもりだったのでValueを16bitにしたみたいだねっ!
その通りなのじぇ。いやー神は細部に宿るとはよく言ったものなのじぇ....