search.c

評価関数を呼んで>=betaならやっている
if ( null_depth < PLY_INC )のときは静止探索を呼んでいる
現状既にかなり良い盤面しかnullMove探索しないってことかな


fruitChessのようなhistoryをされているけど、
next.cの中で使っているオーダリング用かな
特にreductionの条件には絡んでないみたい
misakiではLMRの方が性能がいいと思ってhistoryは捨てちゃったけど
オーダリングに使えばいいかもしれない。


singularExtensionは見あたらなかった。もうやられてないのかもしれない。

探索延長部分
LimitExtension(extension, ply)はshogi.hでマクロ定義

    if ( turn ? is_move_check_w( ptree, MOVE_CURR )
              : is_move_check_b( ptree, MOVE_CURR ) )
      {
	ptree->check_extension_done++;
	ptree->nsuc_check[ply+1]
	  = (unsigned char)( ptree->nsuc_check[ply-1] + 1U );
	extension = EXT_CHECK;
      }
    else if ( ! ptree->nsuc_check[ply] 
	      && ( state_node & node_do_recap )
	      && I2To(MOVE_CURR) == I2To(MOVE_LAST)
	      && ( MOVE_CURR == ptree->anext_move[ply].move_cap1
		   || ( ( ptree->anext_move[ply].value_cap1
			  < ptree->anext_move[ply].value_cap2 + MT_CAP_PAWN )
			&& MOVE_CURR == ptree->anext_move[ply].move_cap2 ) )
	      && ( UToCap(MOVE_LAST)
		   || ( I2IsPromote(MOVE_LAST)
			&& I2PieceMove(MOVE_LAST) != silver ) ) )
      {
	ptree->recap_extension_done++;
	state_node_new = node_do_null | node_do_mate | node_do_futile;
	if ( ! I2IsPromote(MOVE_CURR)
	     && I2PieceMove(MOVE_LAST) == UToCap(MOVE_LAST) )
	  {
	    extension = EXT_RECAP2;
	  }
	else { extension = EXT_RECAP1; }
      }

    LimitExtension( extension, ply );