@@ -49,7 +49,7 @@ extern volatile int PONDERING;
49
49
50
50
void InitPruningAndReductionTables () {
51
51
for (int depth = 1 ; depth < MAX_SEARCH_PLY ; depth ++ )
52
- for (int moves = 1 ; moves < 64 ; moves ++ ) LMR [depth ][moves ] = log (depth ) * log (moves ) / 2 - 0.2 ;
52
+ for (int moves = 1 ; moves < 64 ; moves ++ ) LMR [depth ][moves ] = log (depth ) * log (moves ) / 2.25 + 0.25 ;
53
53
54
54
LMR [0 ][0 ] = LMR [0 ][1 ] = LMR [1 ][0 ] = 0 ;
55
55
@@ -389,8 +389,14 @@ int Negamax(int alpha, int beta, int depth, int cutnode, ThreadData* thread, PV*
389
389
if (!tt ) TTPut (board -> zobrist , INT8_MIN , UNKNOWN , TT_UNKNOWN , NULL_MOVE , data -> ply , eval , ttPv );
390
390
391
391
// getting better if eval has gone up
392
- int improving = !board -> checkers && data -> ply >= 2 &&
393
- (data -> evals [data -> ply ] > data -> evals [data -> ply - 2 ] || data -> evals [data -> ply - 2 ] == UNKNOWN );
392
+ int improving = 0 ;
393
+ if (!board -> checkers && data -> ply >= 2 ) {
394
+ if (data -> ply >= 4 && data -> evals [data -> ply - 2 ] == UNKNOWN ) {
395
+ improving = data -> evals [data -> ply ] > data -> evals [data -> ply - 4 ] || data -> evals [data -> ply - 4 ] == UNKNOWN ;
396
+ } else {
397
+ improving = data -> evals [data -> ply ] > data -> evals [data -> ply - 2 ] || data -> evals [data -> ply - 2 ] == UNKNOWN ;
398
+ }
399
+ }
394
400
395
401
// reset moves to moves related to 1 additional ply
396
402
data -> skipMove [data -> ply + 1 ] = NULL_MOVE ;
@@ -560,8 +566,8 @@ int Negamax(int alpha, int beta, int depth, int cutnode, ThreadData* thread, PV*
560
566
561
567
// Late move reductions
562
568
int R = 1 ;
563
- if (depth > 2 && playedMoves > 1 && !tactical ) {
564
- R = LMR [min (depth , 63 )][min (playedMoves , 63 )];
569
+ if (depth > 2 && legalMoves > 1 && !tactical ) {
570
+ R = LMR [min (depth , 63 )][min (legalMoves , 63 )];
565
571
566
572
// increase reduction on non-pv
567
573
if (!ttPv ) R ++ ;
0 commit comments