My earlier test that futility prune makes strange moves is simply due to bugs.
It seems to work perfectly now.It has a 2-0 win against tscp playing two sides
and this 2 games may be significant confirmation that unconditional futility
prune at horizon depths, if done right, should at least not weaken a program.
My SnailAg currently is one of the weakest (a silly low nps) program
simply because it started with an elaborate attempt to generate almost full
chess information by eval(), attack-tables,qsort,move-order, nearly all
legal moves with check status fully known, etc..From the two log files,
it can be seen that significant % of nodes were pruned. If a weak
program wrongly prunes high % moves, it is unlikey ever to win. Futility is
applied at both full search() and also root-search as futily may be trigered
here as some bad moves are reduced by one ply.
Unconditonanal means only moves that give checks are excluded as this is
the only strict condition in the idea of futility at horizon. Futility
at pre-horizon is actually something very different although the names are
similar. Even moves when in-check are included. This can be done after
a valid move is found that confirms there is no mate. In snailchess,
generate-moves may know there is at least a legal move when futility
can start for all moves.
Futility equivalent to early fail-low
====================================
There is a strict analysis that can show quite clear what the risk is.
When a move that is a horizon move after adjusted for extention/reduction
is make(),it enters QS. If a call to eval() fails high, then the horizon
move fail-low. Futility attempts to determine fail-low without the need to
call makemove(), eval() and takeback(). As most allocated time is spent at
the leaves, time savings in early fail-low may be significant.
QS fail high can strictly be known w/o calling eval() IF we strictly
limit eval() score to say 3 pawns by comparing material difference
with beta+3-pawn. Eval() need only to limit score only for the xside, ie
-ve score. Positive scores for side need no restricion.
As it has been said " ... there are few positions worth more than one and
half pawn", a 3-pawn limit is applicable in many postions,exceptions being
maybe king-safety. One other well known exception is xside pawn races that
may be scored near 8-pawn. But this has an easily identifiable condtion,
ie side has no sliding piece and xside has a pass-exposed pawn. So we may
use a futility margin of 9-pawn for this and disable eval() bounds.
One exception when futility early fail-low breaks the equivalent relation in QS.
If there is hashing, in QS there is hashpobe() before eval(). If a futile pruned move
is make() and enters QS, hash may have a hit with draft >0 that may cause
a FAIL-LOW! whereas eval(), if reached, will be a fail-high. This will be cleared
in the next depth and probably do not occur often with a 3-pawn material difference.
Best regards
Rasjid
The following are my codes:-
#define FUTILITY_MARGIN_1 300
#define FUTILITY_MARGIN_1_EG 300
#define FUTILITY_MARGIN_2 900
int full/root-search(){
list through all moves
if rept-3()//currently not working
continue;
i = 0;
if (ps->depth+fExt/60<=1// horizon
&& mtl[side]-mtl[xside]<ps->alpha-FUTILITY_MARGIN_1_EG
&& !(ptrMoveStack->mv.b.bits&64//checks
//in-check
|| (ps->flag&F_C && !(pv[ply][ply].u || ps->flag&F_VALID_MOVE))) ){
if (!(ptrMoveStack->mv.b.bits&5)){//capt/ep
i = mtl[side]-mtl[xside];
}else if (ptrMoveStack->mv.b.bits&1){
i = mtl[side]-mtl[xside]
+piece_value[brdPPC(ptrMoveStack->mv.b.to)->pc];
}else{//ep
i = mtl[side]-mtl[xside]+vPAWN;
}
if (ptrMoveStack->mv.b.bits&32)//promote
i += piece_value[(ptrMoveStack->mv.b.promote_checkSq&3)+1]
-vPAWN;
if (i<ps->alpha
-(((!(ps->flag&F_XSIDE_BRQ) ||
(ptrMoveStack->mv.b.bits&1
&& ps->flag&F_XSIDE_1BRQ
&& brdPPC(ptrMoveStack->mv.b.to)->pc>=2))
&& pawn_count[side])
? FUTILITY_MARGIN_2
: (stage<2 ? FUTILITY_MARGIN_1 : FUTILITY_MARGIN_1_EG))){
assert(ps->alpha > M_MATE);
assert(!pv[ply][ply].u ?ps->alpha == ps->alpha0: ps->alpha >= ps->alpha0);
if (pv[ply][ply].u // move found
//king's move/ep may be invalid
|| (brdPPC(ptrMoveStack->mv.b.from)->pc<5
&& !(ptrMoveStack->mv.b.bits&4)//ep
)){
if (i>ps->best && ps->alpha==ps->alpha0){
ps->best = i;
ps->best_type = T_UB;//may end as FL
pv[ply][ply].u = ptrMoveStack->mv.u;
}
assert(pv[ply][ply].u);
follow_pv = 0;
hash = *ptr_hash_dat;
phash = ps->phash;
++prunedMate;
ps->flag|=F_FUTILE_PRUNED;
continue;
}
//king's / ep may be invalid
assert(brdPPC(ptrMoveStack->mv.b.from)->pc==5
|| ptrMoveStack->mv.b.bits&4);
//i = True, test king/ep valid and prune
}else i = 0;
}
makemove(ptrMoveStack->mv.b);
if (invalid){
takeback();
continue;
}
if (i){//test futility prune for king's/ep if valid
takeback();
ps->flag|=F_FUTILE_PRUNED;
++prunedMate;
ps->best = i;
ps->best_type = T_UB;//may end as FL
pv[ply][ply].u = ptrMoveStack->mv.u;
hash = *ptr_hash_dat;
phash = ps->phash;
follow_pv = 0;
continue;
}
.....
.../
return;
}
int q-search(){
//restrict eval()
score = EVAL[stage]();
if (slide[side] || !max_pawn[xside]) // xside cannot race to promote
score = max(score, -300);
score += mtl[side]-mtl[xside];
return;
}
Processor - 1st generation P4 1.4 Ghz, 128 MB
SnailChess ?Silver-
Search algorithm - alphabeta
Pawn Hash Size 0.75 MB, record size (24) bytes
Hash Size 16.00 MB, record size 16, records 1048576
no nullmove
various extention, reduction
game 1
[Event "Computer chess game"]
[Site "P4"]
[Date "2005.03.31"]
[Round "-"]
[White "TSCP"]
[Black "SnailAg"]
[Result "0-1"]
[TimeControl "40/30"]
1. e4 e5 2. Nf3 Nf6 3. Nc3 Nc6 4. Bc4 h6 5. d3 Bd6 6. O-O Bb4 7. Nd5 d6 8.
Bb5 Ba5 9. Bxc6+ bxc6 10. Nxf6+ Qxf6 11. Bd2 Bxd2 12. Nxd2 O-O 13. Qf3 Qxf3
14. Nxf3 Bd7 15. Rfb1 c5 16. Nd2 Rfd8 17. Nc4 Rab8 18. c3 Be6 19. b3 Bxc4
20. dxc4 Kf8 21. f3 Ke7 22. Kf2 Rb6 23. Ke3 Ke6 24. Rb2 g6 25. Rd2 Rdb8 26.
Rad1 h5 27. g3 f6 28. h4 f5 29. Rd5 f4+ 30. gxf4 exf4+ 31. Kxf4 a6 32. e5
Rf8+ 33. Ke4 Rh8 34. Rg1 Rh6 35. Kf4 Kf7 36. Re1 Rh7 37. Kg5 Rg7 38. f4 Rg8
39. e6+ Ke7 40. Rd3 Rg7 41. Kh6 Rg8 42. Kh7 Rbb8 43. Rg3 Kf6 44. Rxg6+ Rxg6
45. Re2 Rg7+ 46. Kh6 Rh8#
{SnailAg Mate} 0-1
1 e2e4
1, e7e5, -29, d 4, Iter 4, nps 42260, pvL 4, instab 0
pvStage 0, FH 0.78, etc0.00, null 0.00, nullH -1.#J, Hhit 0.11, eHhit 0.08, PHhit 0.54
maxD(11) %fnodes(0.30) %except(0.08) %OExt(0.35) FutilePuned(2522)
2 g1f3
2, g8f6, -34, d 4, Iter 4, nps 41872, pvL 4, instab 0
pvStage 0, FH 0.77, etc0.00, null 0.00, nullH -1.#J, Hhit 0.09, eHhit 0.06, PHhit 0.62
maxD(11) %fnodes(0.17) %except(0.14) %OExt(0.23) FutilePuned(3777)
3 b1c3
3, b8c6, -54, d 3, Iter 2, nps 43279, pvL 5, instab 0
pvStage 0, FH 0.76, etc0.00, null 0.00, nullH -1.#J, Hhit 0.06, eHhit 0.04, PHhit 0.61
maxD(10) %fnodes(0.06) %except(0.40) %OExt(0.17) FutilePuned(1837)
4 f1c4
4, h7h6, -46, d 2, Iter 2, nps 42290, pvL 3, instab 0
pvStage 0, FH 0.82, etc0.00, null 0.00, nullH -1.#J, Hhit 0.05, eHhit 0.05, PHhit 0.67
maxD( 9) %fnodes(0.11) %except(0.09) %OExt(0.15) FutilePuned(1312)
5 d2d3
5, f8d6, -59, d 2, Iter 2, nps 41692, pvL 3, instab 0
pvStage 0, FH 0.79, etc0.00, null 0.00, nullH -1.#J, Hhit 0.05, eHhit 0.04, PHhit 0.68
maxD( 9) %fnodes(0.08) %except(0.17) %OExt(0.14) FutilePuned(1443)
6 e1g1
6, d6b4, -85, d 2, Iter 1, nps 41493, pvL 3, instab 0
pvStage 0, FH 0.81, etc0.00, null 0.00, nullH -1.#J, Hhit 0.05, eHhit 0.05, PHhit 0.67
maxD( 9) %fnodes(0.04) %except(0.24) %OExt(0.08) FutilePuned(568)
7 c3d5
7, d7d6, -96, d 2, Iter 2, nps 41219, pvL 3, instab 0
pvStage 0, FH 0.82, etc0.00, null 0.00, nullH -1.#J, Hhit 0.07, eHhit 0.06, PHhit 0.62
maxD( 9) %fnodes(0.14) %except(0.12) %OExt(0.22) FutilePuned(2603)
8 c4b5
8, b4a5, -104, d 3, Iter 3, nps 40936, pvL 3, instab 0
pvStage 0, FH 0.84, etc0.00, null 0.00, nullH -1.#J, Hhit 0.09, eHhit 0.06, PHhit 0.55
maxD(10) %fnodes(0.21) %except(0.14) %OExt(0.09) FutilePuned(7703)
9 b5c6
9, b7c6, -86, d 3, Iter 3, nps 40603, pvL 8, instab 0
pvStage 0, FH 0.93, etc0.00, null 0.00, nullH -1.#J, Hhit 0.16, eHhit 0.11, PHhit 0.53
maxD(10) %fnodes(0.56) %except(0.04) %OExt(0.16) FutilePuned(21933)
10 d5f6
10, d8f6, -114, d 4, Iter 3, nps 40661, pvL 6, instab 0
pvStage 0, FH 0.86, etc0.00, null 0.00, nullH -1.#J, Hhit 0.13, eHhit 0.10, PHhit 0.50
maxD(11) %fnodes(0.33) %except(0.15) %OExt(0.17) FutilePuned(9943)
11 c1d2
11, a5d2, -38, d 4, Iter 4, nps 40710, pvL 7, instab 0
pvStage 1, FH 0.90, etc0.00, null 0.00, nullH -1.#J, Hhit 0.12, eHhit 0.09, PHhit 0.64
maxD(11) %fnodes(0.48) %except(0.03) %OExt(0.26) FutilePuned(10077)
12 f3d2
12, e8g8, -46, d 4, Iter 4, nps 40876, pvL 5, instab 0
pvStage 1, FH 0.91, etc0.00, null 0.00, nullH -1.#J, Hhit 0.21, eHhit 0.17, PHhit 0.56
maxD( 9) %fnodes(0.65) %except(0.00) %OExt(0.38) FutilePuned(7610)
13 d1f3
13, f6f3, 0, d 5, Iter 5, nps 41367, pvL 5, instab 0
pvStage 2, FH 0.91, etc0.00, null 0.00, nullH -1.#J, Hhit 0.22, eHhit 0.16, PHhit 0.55
maxD(12) %fnodes(0.82) %except(0.00) %OExt(0.32) FutilePuned(16432)
14 d2f3
14, c8d7, -12, d 5, Iter 4, nps 42284, pvL 5, instab 0
pvStage 1, FH 0.87, etc0.00, null 0.00, nullH -1.#J, Hhit 0.31, eHhit 0.31, PHhit 0.52
maxD(11) %fnodes(0.88) %except(0.00) %OExt(0.38) FutilePuned(10975)
15 f1b1
15, c6c5, -7, d 4, Iter 4, nps 43239, pvL 5, instab 0
pvStage 1, FH 0.86, etc0.00, null 0.00, nullH -1.#J, Hhit 0.33, eHhit 0.36, PHhit 0.55
maxD(11) %fnodes(0.87) %except(0.00) %OExt(0.43) FutilePuned(5926)
16 f3d2
16, f8d8, -7, d 5, Iter 5, nps 44071, pvL 5, instab 0
pvStage 1, FH 0.85, etc0.00, null 0.00, nullH -1.#J, Hhit 0.29, eHhit 0.33, PHhit 0.58
maxD(11) %fnodes(0.90) %except(0.00) %OExt(0.47) FutilePuned(5427)
17 d2c4
17, a8b8, -7, d 5, Iter 5, nps 44633, pvL 5, instab 0
pvStage 1, FH 0.90, etc0.00, null 0.00, nullH -1.#J, Hhit 0.29, eHhit 0.26, PHhit 0.56
maxD(12) %fnodes(0.84) %except(0.00) %OExt(0.29) FutilePuned(12219)
18 c2c3
18, d7e6, -4, d 4, Iter 4, nps 45023, pvL 5, instab 0
pvStage 2, FH 0.95, etc0.00, null 0.00, nullH -1.#J, Hhit 0.26, eHhit 0.20, PHhit 0.52
maxD(11) %fnodes(0.80) %except(0.00) %OExt(0.18) FutilePuned(26713)
19 b2b3
19, e6c4, 5, d 4, Iter 4, nps 45495, pvL 9, instab 0
pvStage 3, FH 0.93, etc0.00, null 0.00, nullH -1.#J, Hhit 0.23, eHhit 0.18, PHhit 0.45
maxD(12) %fnodes(0.74) %except(0.00) %OExt(0.06) FutilePuned(34467)
20 d3c4
20, g8f8, -1, d 5, Iter 4, nps 46383, pvL 6, instab 0
pvStage 2, FH 0.90, etc0.00, null 0.00, nullH -1.#J, Hhit 0.34, eHhit 0.27, PHhit 0.41
maxD(12) %fnodes(0.84) %except(0.00) %OExt(0.04) FutilePuned(19538)
21 f2f3
21, f8e7, -16, d 5, Iter 5, nps 47179, pvL 6, instab 0
pvStage 2, FH 0.88, etc0.00, null 0.00, nullH -1.#J, Hhit 0.28, eHhit 0.25, PHhit 0.50
maxD(11) %fnodes(0.75) %except(0.00) %OExt(0.08) FutilePuned(11958)
22 g1f2
22, b8b6, -11, d 5, Iter 5, nps 48072, pvL 5, instab 0
pvStage 2, FH 0.84, etc0.00, null 0.00, nullH -1.#J, Hhit 0.35, eHhit 0.40, PHhit 0.54
maxD(12) %fnodes(0.86) %except(0.00) %OExt(0.08) FutilePuned(10700)
23 f2e3
23, e7e6, -19, d 4, Iter 3, nps 48954, pvL 4, instab 0
pvStage 2, FH 0.78, etc0.00, null 0.00, nullH -1.#J, Hhit 0.33, eHhit 0.43, PHhit 0.51
maxD(11) %fnodes(0.85) %except(0.00) %OExt(0.06) FutilePuned(10046)
24 b1b2
24, g7g6, -38, d 4, Iter 4, nps 49411, pvL 5, instab 0
pvStage 2, FH 0.84, etc0.00, null 0.00, nullH -1.#J, Hhit 0.19, eHhit 0.19, PHhit 0.55
maxD(11) %fnodes(0.68) %except(0.01) %OExt(0.07) FutilePuned(10553)
25 b2d2
25, d8b8, -27, d 4, Iter 4, nps 49816, pvL 3, instab 0
pvStage 2, FH 0.86, etc0.00, null 0.00, nullH -1.#J, Hhit 0.13, eHhit 0.10, PHhit 0.53
maxD(11) %fnodes(0.53) %except(0.03) %OExt(0.05) FutilePuned(15890)
26 a1d1
26, h6h5, -23, d 4, Iter 4, nps 50289, pvL 3, instab 0
pvStage 2, FH 0.85, etc0.00, null 0.00, nullH -1.#J, Hhit 0.17, eHhit 0.14, PHhit 0.47
maxD(11) %fnodes(0.61) %except(0.01) %OExt(0.02) FutilePuned(23556)
27 g2g3
27, f7f6, -16, d 3, Iter 3, nps 50735, pvL 3, instab 0
pvStage 2, FH 0.87, etc0.00, null 0.00, nullH -1.#J, Hhit 0.14, eHhit 0.13, PHhit 0.44
maxD(11) %fnodes(0.52) %except(0.03) %OExt(0.01) FutilePuned(18195)
28 h2h4
28, f6f5, 4, d 3, Iter 3, nps 51200, pvL 6, instab 0
pvStage 2, FH 0.87, etc0.00, null 0.00, nullH -1.#J, Hhit 0.17, eHhit 0.15, PHhit 0.49
maxD(11) %fnodes(0.44) %except(0.05) %OExt(0.00) FutilePuned(15401)
29 d2d5
29, f5f4, 33, d 3, Iter 3, nps 51557, pvL 7, instab 0
pvStage 2, FH 0.89, etc0.00, null 0.00, nullH -1.#J, Hhit 0.17, eHhit 0.14, PHhit 0.44
maxD(10) %fnodes(0.48) %except(0.01) %OExt(0.00) FutilePuned(14945)
30 g3f4
30, e5f4, 55, d 3, Iter 3, nps 51899, pvL 6, instab 0
pvStage 2, FH 0.88, etc0.00, null 0.00, nullH -1.#J, Hhit 0.15, eHhit 0.11, PHhit 0.50
maxD(11) %fnodes(0.35) %except(0.03) %OExt(0.00) FutilePuned(8314)
31 e3f4
31, a7a6, -102, d 4, Iter 3, nps 52325, pvL 4, instab 0
pvStage 2, FH 0.87, etc0.00, null 0.00, nullH -1.#J, Hhit 0.16, eHhit 0.12, PHhit 0.51
maxD(11) %fnodes(0.33) %except(0.02) %OExt(0.00) FutilePuned(8414)
32 e4e5
32, b8f8, -165, d 4, Iter 3, nps 52652, pvL 5, instab 0
pvStage 2, FH 0.86, etc0.00, null 0.00, nullH -1.#J, Hhit 0.14, eHhit 0.11, PHhit 0.50
maxD(11) %fnodes(0.33) %except(0.02) %OExt(0.00) FutilePuned(11462)
33 f4e4
33, f8h8, -167, d 4, Iter 3, nps 52930, pvL 7, instab 0
pvStage 2, FH 0.88, etc0.00, null 0.00, nullH -1.#J, Hhit 0.20, eHhit 0.14, PHhit 0.45
maxD(11) %fnodes(0.44) %except(0.01) %OExt(0.00) FutilePuned(17646)
34 d1g1
34, h8h6, -171, d 4, Iter 4, nps 53215, pvL 5, instab 0
pvStage 2, FH 0.89, etc0.00, null 0.00, nullH -1.#J, Hhit 0.17, eHhit 0.12, PHhit 0.56
maxD(11) %fnodes(0.30) %except(0.02) %OExt(0.00) FutilePuned(7277)
35 e4f4
35, e6f7, -183, d 4, Iter 4, nps 53563, pvL 5, instab 0
pvStage 2, FH 0.89, etc0.00, null 0.00, nullH -1.#J, Hhit 0.19, eHhit 0.16, PHhit 0.54
maxD(11) %fnodes(0.37) %except(0.03) %OExt(0.00) FutilePuned(10888)
36 g1e1
36, h6h7, -214, d 3, Iter 3, nps 53847, pvL 3, instab 0
pvStage 2, FH 0.87, etc0.00, null 0.00, nullH -1.#J, Hhit 0.13, eHhit 0.10, PHhit 0.62
maxD(10) %fnodes(0.25) %except(0.04) %OExt(0.00) FutilePuned(6923)
37 f4g5
37, h7g7, -216, d 4, Iter 4, nps 54070, pvL 5, instab 0
pvStage 2, FH 0.85, etc0.00, null 0.00, nullH -1.#J, Hhit 0.14, eHhit 0.10, PHhit 0.61
maxD(11) %fnodes(0.31) %except(0.04) %OExt(0.00) FutilePuned(6608)
38 f3f4
38, g7g8, -231, d 4, Iter 4, nps 54196, pvL 5, instab 0
pvStage 2, FH 0.88, etc0.00, null 0.00, nullH -1.#J, Hhit 0.18, eHhit 0.13, PHhit 0.51
maxD(11) %fnodes(0.43) %except(0.04) %OExt(0.00) FutilePuned(6067)
39 e5e6
39, f7e7, -121, d 2, Iter 0, nps 54197, pvL 2, instab 0
pvStage 2, FH -1.#J, etc0.00, null 0.00, nullH -1.#J, Hhit 0.97, eHhit 22.00, PHhit 0.00
maxD( 2) %fnodes(1.00) %except(0.00) %OExt(0.00) FutilePuned(0)
40 d5d3
40, g8g7, -199, d 1, Iter 0, nps 54198, pvL 1, instab 0
pvStage 2, FH 1.00, etc0.00, null 0.00, nullH -1.#J, Hhit 0.18, eHhit 0.22, PHhit 0.71
maxD( 1) %fnodes(0.75) %except(0.00) %OExt(0.00) FutilePuned(0)
41 g5h6
41, g7g8, -203, d 5, Iter 5, nps 54742, pvL12, instab 0
pvStage 2, FH 0.94, etc0.00, null 0.00, nullH -1.#J, Hhit 0.26, eHhit 0.15, PHhit 0.44
maxD(12) %fnodes(0.54) %except(0.04) %OExt(0.00) FutilePuned(37397)
42 h6h7
42, b6b8, 821, d 5, Iter 5, nps 55169, pvL12, instab 0
pvStage 4, FH 0.91, etc0.00, null 0.00, nullH -1.#J, Hhit 0.21, eHhit 0.12, PHhit 0.43
maxD(13) %fnodes(0.46) %except(0.02) %OExt(0.00) FutilePuned(30484)
43 d3g3
root MAX_DEPTH
43, e7f6, 9993, d 24, Iter 13, nps 55321, pvL 4, instab 0
pvStage 2, FH 0.97, etc0.00, null 0.00, nullH -1.#J, Hhit 0.50, eHhit 0.73, PHhit 0.00
maxD( 7) %fnodes(1.00) %except(0.00) %OExt(0.00) FutilePuned(49)
44 g3g6
root MAX_DEPTH
44, g8g6, 9995, d 24, Iter 12, nps 55324, pvL 1, instab 0
pvStage 0, FH 0.96, etc0.00, null 0.00, nullH -1.#J, Hhit 0.63, eHhit 0.18, PHhit 0.30
maxD( 2) %fnodes(0.61) %except(0.00) %OExt(0.00) FutilePuned(0)
45 e1e2
root MAX_DEPTH
45, g6g7, 9997, d 24, Iter 12, nps 55334, pvL 1, instab 0
pvStage 2, FH -1.#J, etc0.00, null 0.00, nullH -1.#J, Hhit 0.06, eHhit 3.00, PHhit 0.00
maxD( 1) %fnodes(1.00) %except(0.00) %OExt(0.00) FutilePuned(0)
46 h7h6
46, b8h8, 9999, d 1, Iter 0, nps 55334, pvL 0, 0.00sec, instab 0
//should be a 1-0 win, rep3 code not working
[Event "Computer chess game"]
[Site "P4"]
[Date "2005.03.31"]
[Round "-"]
[White "SnailAg"]
[Black "TSCP"]
[Result "1/2-1/2"]
[TimeControl "40/30"]
1. e4 d5 2. exd5 Qxd5 3. Nc3 Qa5 4. d4 Nf6 5. Be3 e6 6. a3 Nd5 7. Bd2 Bd6
8. Nxd5 Qxd5 9. Qg4 Nc6 10. Ne2 Kf8 11. Qh4 Kg8 12. Bc3 Be7 13. Qh3 e5 14.
Qe3 exd4 15. Nxd4 Nxd4 16. Bxd4 Be6 17. Qe5 Qxe5+ 18. Bxe5 c5 19. Bc3 Rd8
20. Bd3 c4 21. Be4 Bd5 22. Bxd5 Rxd5 23. O-O f5 24. Rad1 Rd6 25. Rxd6 Bxd6
26. Rd1 Bf8 27. f4 b6 28. Kf1 a6 29. Rd5 Kf7 30. Rxf5+ Ke6 31. Re5+ Kf7 32.
Rf5+ Ke6 33. Rg5 Kf7 34. Ke2 Rg8 35. Bd4 Be7 36. Rh5 Re8 37. Kf3 h6 38.
Bxb6 Bf6 39. Ra5 Bxb2 40. Rxa6 Re1 41. Bf2 Rc1 42. Ra7+ Ke6 43. Ra6+ Kf7
44. Ra7+ Ke6 45. Ra6+ Kf7 46. Ra7+ Ke6 47. Ra6+ Kf7
{Draw by repetition} 1/2-1/2
1, e2e4, 29, d 5, Iter 5, nps 42338, pvL 5, instab 0
pvStage 0, FH 0.77, etc0.00, null 0.00, nullH -1.#J, Hhit 0.17, eHhit 0.14, PHhit 0.51
maxD(10) %fnodes(0.47) %except(0.08) %OExt(0.46) FutilePuned(1872)
1 d7d5
2, e4d5, 24, d 3, Iter 3, nps 42356, pvL 7, instab 0
pvStage 0, FH 0.80, etc0.00, null 0.00, nullH -1.#J, Hhit 0.09, eHhit 0.07, PHhit 0.60
maxD( 9) %fnodes(0.11) %except(0.14) %OExt(0.12) FutilePuned(3513)
2 d8d5
3, b1c3, 43, d 4, Iter 3, nps 41742, pvL 4, instab 0
pvStage 0, FH 0.79, etc0.00, null 0.00, nullH -1.#J, Hhit 0.10, eHhit 0.07, PHhit 0.59
maxD( 8) %fnodes(0.31) %except(0.03) %OExt(0.29) FutilePuned(6101)
3 d5a5
4, d2d4, 115, d 3, Iter 3, nps 41261, pvL 4, instab 0
pvStage 0, FH 0.76, etc0.00, null 0.00, nullH -1.#J, Hhit 0.05, eHhit 0.03, PHhit 0.67
maxD( 9) %fnodes(0.13) %except(0.15) %OExt(0.23) FutilePuned(3828)
4 g8f6
5, c1e3, 38, d 3, Iter 3, nps 41197, pvL 4, instab 0
pvStage 0, FH 0.75, etc0.00, null 0.00, nullH -1.#J, Hhit 0.05, eHhit 0.04, PHhit 0.69
maxD( 7) %fnodes(0.11) %except(0.20) %OExt(0.31) FutilePuned(3026)
5 e7e6
6, a2a3, 93, d 3, Iter 3, nps 40789, pvL 4, instab 0
pvStage 0, FH 0.75, etc0.00, null 0.00, nullH -1.#J, Hhit 0.07, eHhit 0.06, PHhit 0.72
maxD( 9) %fnodes(0.19) %except(0.14) %OExt(0.28) FutilePuned(3692)
6 f6d5
7, e3d2, -12, d 3, Iter 3, nps 40814, pvL 3, instab 0
pvStage 1, FH 0.76, etc0.00, null 0.00, nullH -1.#J, Hhit 0.05, eHhit 0.04, PHhit 0.70
maxD( 9) %fnodes(0.07) %except(0.20) %OExt(0.04) FutilePuned(3869)
7 f8d6
8, c3d5, 132, d 2, Iter 2, nps 40724, pvL 4, instab 0
pvStage 0, FH 0.79, etc0.00, null 0.00, nullH -1.#J, Hhit 0.05, eHhit 0.04, PHhit 0.72
maxD( 9) %fnodes(0.11) %except(0.09) %OExt(0.01) FutilePuned(5349)
8 a5d5
9, d1g4, 80, d 3, Iter 2, nps 40562, pvL 7, instab 0
pvStage 0, FH 0.81, etc0.00, null 0.00, nullH -1.#J, Hhit 0.07, eHhit 0.06, PHhit 0.62
maxD(10) %fnodes(0.12) %except(0.04) %OExt(0.06) FutilePuned(5295)
9 b8c6
10, g1e2, -904, d 2, Iter 2, nps 40579, pvL 5, instab 0
pvStage 0, FH 0.80, etc0.00, null 0.00, nullH -1.#J, Hhit 0.04, eHhit 0.04, PHhit 0.73
maxD( 7) %fnodes(0.03) %except(0.19) %OExt(0.05) FutilePuned(1138)
10 e8f8
11, g4h4, -268, d 2, Iter 2, nps 40494, pvL 3, instab 0
pvStage 2, FH 0.78, etc0.00, null 0.00, nullH -1.#J, Hhit 0.04, eHhit 0.03, PHhit 0.73
maxD( 9) %fnodes(0.12) %except(0.08) %OExt(0.02) FutilePuned(6206)
11 f8g8
12, d2c3, -63, d 3, Iter 3, nps 40331, pvL 3, instab 0
pvStage 0, FH 0.79, etc0.00, null 0.00, nullH -1.#J, Hhit 0.05, eHhit 0.04, PHhit 0.71
maxD(10) %fnodes(0.07) %except(0.03) %OExt(0.04) FutilePuned(4758)
12 d6e7
13, h4h3, -99, d 3, Iter 3, nps 40432, pvL 3, instab 0
pvStage 0, FH 0.79, etc0.00, null 0.00, nullH -1.#J, Hhit 0.05, eHhit 0.04, PHhit 0.69
maxD( 8) %fnodes(0.04) %except(0.19) %OExt(0.04) FutilePuned(1936)
13 e6e5
14, h3e3, -10, d 3, Iter 3, nps 40685, pvL 3, instab 0
pvStage 1, FH 0.81, etc0.00, null 0.00, nullH -1.#J, Hhit 0.08, eHhit 0.06, PHhit 0.68
maxD(10) %fnodes(0.07) %except(0.23) %OExt(0.04) FutilePuned(3234)
14 e5d4
15, e2d4, 13, d 2, Iter 2, nps 41159, pvL 5, instab 0
pvStage 1, FH 0.79, etc0.00, null 0.00, nullH -1.#J, Hhit 0.10, eHhit 0.07, PHhit 0.68
maxD( 9) %fnodes(0.06) %except(0.35) %OExt(0.02) FutilePuned(2907)
15 c6d4
16, c3d4, -140, d 2, Iter 1, nps 41545, pvL 5, instab 0
pvStage 1, FH 0.81, etc0.00, null 0.00, nullH -1.#J, Hhit 0.13, eHhit 0.10, PHhit 0.63
maxD( 9) %fnodes(0.18) %except(0.15) %OExt(0.05) FutilePuned(5271)
16 c8e6
17, e3e5, -33, d 3, Iter 3, nps 41728, pvL 3, instab 0
pvStage 1, FH 0.78, etc0.00, null 0.00, nullH -1.#J, Hhit 0.07, eHhit 0.05, PHhit 0.68
maxD( 9) %fnodes(0.06) %except(0.12) %OExt(0.13) FutilePuned(3029)
17 d5e5
18, d4e5, -114, d 5, Iter 5, nps 42083, pvL 5, instab 0
pvStage 1, FH 0.86, etc0.00, null 0.00, nullH -1.#J, Hhit 0.12, eHhit 0.08, PHhit 0.61
maxD(11) %fnodes(0.31) %except(0.01) %OExt(0.15) FutilePuned(12354)
18 c7c5
19, e5c3, -26, d 4, Iter 3, nps 42375, pvL 4, instab 0
pvStage 1, FH 0.84, etc0.00, null 0.00, nullH -1.#J, Hhit 0.14, eHhit 0.12, PHhit 0.64
maxD( 9) %fnodes(0.52) %except(0.00) %OExt(0.17) FutilePuned(3594)
19 a8d8
20, f1d3, -28, d 4, Iter 4, nps 42613, pvL 5, instab 0
pvStage 1, FH 0.81, etc0.00, null 0.00, nullH -1.#J, Hhit 0.13, eHhit 0.10, PHhit 0.68
maxD(10) %fnodes(0.45) %except(0.01) %OExt(0.23) FutilePuned(3746)
20 c5c4
21, d3e4, 17, d 4, Iter 3, nps 42832, pvL 5, instab 0
pvStage 1, FH 0.85, etc0.00, null 0.00, nullH -1.#J, Hhit 0.14, eHhit 0.09, PHhit 0.57
maxD(11) %fnodes(0.37) %except(0.01) %OExt(0.11) FutilePuned(11611)
21 e6d5
22, e4d5, 42, d 4, Iter 4, nps 43176, pvL 7, instab 0
pvStage 2, FH 0.90, etc0.00, null 0.00, nullH -1.#J, Hhit 0.16, eHhit 0.09, PHhit 0.53
maxD(11) %fnodes(0.50) %except(0.03) %OExt(0.07) FutilePuned(18180)
22 d8d5
23, e1g1, 45, d 5, Iter 4, nps 43681, pvL 5, instab 0
pvStage 3, FH 0.88, etc0.00, null 0.00, nullH -1.#J, Hhit 0.28, eHhit 0.24, PHhit 0.50
maxD(12) %fnodes(0.71) %except(0.00) %OExt(0.12) FutilePuned(14081)
23 f7f5
24, a1d1, 160, d 4, Iter 4, nps 44130, pvL 5, instab 0
pvStage 3, FH 0.89, etc0.00, null 0.00, nullH -1.#J, Hhit 0.21, eHhit 0.15, PHhit 0.50
maxD(11) %fnodes(0.66) %except(0.00) %OExt(0.03) FutilePuned(17999)
24 d5d6
25, d1d6, 175, d 4, Iter 3, nps 44622, pvL 7, instab 0
pvStage 4, FH 0.89, etc0.00, null 0.00, nullH -1.#J, Hhit 0.25, eHhit 0.14, PHhit 0.48
maxD(10) %fnodes(0.58) %except(0.00) %OExt(0.03) FutilePuned(19179)
25 e7d6
26, f1d1, 174, d 5, Iter 4, nps 45239, pvL 7, instab 0
pvStage 3, FH 0.89, etc0.00, null 0.00, nullH -1.#J, Hhit 0.30, eHhit 0.20, PHhit 0.45
maxD(12) %fnodes(0.66) %except(0.01) %OExt(0.02) FutilePuned(17802)
26 d6f8
27, f2f4, 117, d 4, Iter 3, nps 45907, pvL 4, instab 0
pvStage 3, FH 0.87, etc0.00, null 0.00, nullH -1.#J, Hhit 0.16, eHhit 0.13, PHhit 0.51
maxD(11) %fnodes(0.51) %except(0.00) %OExt(0.03) FutilePuned(17391)
27 b7b6
28, g1f1, 134, d 4, Iter 3, nps 46318, pvL 5, instab 0
pvStage 3, FH 0.84, etc0.00, null 0.00, nullH -1.#J, Hhit 0.15, eHhit 0.12, PHhit 0.54
maxD(10) %fnodes(0.39) %except(0.00) %OExt(0.03) FutilePuned(7118)
28 a7a6
29, d1d5, 150, d 4, Iter 4, nps 46858, pvL 7, instab 0
pvStage 3, FH 0.88, etc0.00, null 0.00, nullH -1.#J, Hhit 0.24, eHhit 0.20, PHhit 0.54
maxD(11) %fnodes(0.53) %except(0.00) %OExt(0.02) FutilePuned(14500)
29 g8f7
30, d5f5, 157, d 4, Iter 4, nps 47278, pvL 5, instab 0
pvStage 3, FH 0.80, etc0.00, null 0.00, nullH -1.#J, Hhit 0.16, eHhit 0.10, PHhit 0.58
maxD(11) %fnodes(0.30) %except(0.01) %OExt(0.01) FutilePuned(7031)
30 f7e6
31, f5e5, 184, d 4, Iter 3, nps 47700, pvL 5, instab 0
pvStage 3, FH 0.82, etc0.00, null 0.00, nullH -1.#J, Hhit 0.15, eHhit 0.11, PHhit 0.62
maxD(10) %fnodes(0.22) %except(0.01) %OExt(0.00) FutilePuned(2943)
31 e6f7
32, e5f5, 175, d 4, Iter 4, nps 48104, pvL 7, instab 0
pvStage 3, FH 0.80, etc0.00, null 0.00, nullH -1.#J, Hhit 0.23, eHhit 0.16, PHhit 0.60
maxD(12) %fnodes(0.34) %except(0.00) %OExt(0.00) FutilePuned(7635)
32 f7e6
33, f5g5, 178, d 5, Iter 4, nps 48470, pvL 4, instab 0
pvStage 3, FH 0.83, etc0.00, null 0.00, nullH -1.#J, Hhit 0.19, eHhit 0.12, PHhit 0.56
maxD(11) %fnodes(0.37) %except(0.02) %OExt(0.00) FutilePuned(11582)
33 e6f7
34, f1e2, 155, d 4, Iter 3, nps 48952, pvL 7, instab 0
pvStage 3, FH 0.82, etc0.00, null 0.00, nullH -1.#J, Hhit 0.22, eHhit 0.17, PHhit 0.54
maxD(11) %fnodes(0.43) %except(0.00) %OExt(0.00) FutilePuned(16326)
34 h8g8
35, c3d4, 195, d 3, Iter 3, nps 49265, pvL 9, instab 0
pvStage 5, FH 0.79, etc0.00, null 0.00, nullH -1.#J, Hhit 0.13, eHhit 0.10, PHhit 0.70
maxD(11) %fnodes(0.20) %except(0.00) %OExt(0.00) FutilePuned(5660)
35 f8e7
36, g5h5, 174, d 4, Iter 3, nps 49609, pvL 4, instab 0
pvStage 3, FH 0.85, etc0.00, null 0.00, nullH -1.#J, Hhit 0.14, eHhit 0.10, PHhit 0.61
maxD(11) %fnodes(0.37) %except(0.00) %OExt(0.00) FutilePuned(11780)
36 g8e8
37, e2f3, 247, d 4, Iter 3, nps 49840, pvL 5, instab 0
pvStage 3, FH 0.83, etc0.00, null 0.00, nullH -1.#J, Hhit 0.13, eHhit 0.08, PHhit 0.60
maxD(11) %fnodes(0.33) %except(0.00) %OExt(0.00) FutilePuned(8143)
37 h7h6
38, d4b6, 282, d 3, Iter 3, nps 50043, pvL 4, instab 0
pvStage 3, FH 0.76, etc0.00, null 0.00, nullH -1.#J, Hhit 0.13, eHhit 0.11, PHhit 0.63
maxD(10) %fnodes(0.23) %except(0.00) %OExt(0.00) FutilePuned(4992)
38 e7f6
39, h5a5, 218, d 4, Iter 4, nps 50237, pvL 4, instab 0
pvStage 3, FH 0.85, etc0.00, null 0.00, nullH -1.#J, Hhit 0.16, eHhit 0.11, PHhit 0.61
maxD(11) %fnodes(0.44) %except(0.00) %OExt(0.00) FutilePuned(4928)
39 f6b2
40, a5a6, 254, d 1, Iter 0, nps 50239, pvL 2, instab 0
pvStage 3, FH -1.#J, etc0.00, null 0.00, nullH -1.#J, Hhit 0.98, eHhit 52.00, PHhit 0.00
maxD( 2) %fnodes(1.00) %except(0.00) %OExt(0.00) FutilePuned(0)
40 e8e1
41, b6f2, 177, d 4, Iter 3, nps 50989, pvL 5, instab 0
pvStage 3, FH 0.84, etc0.00, null 0.00, nullH -1.#J, Hhit 0.13, eHhit 0.10, PHhit 0.62
maxD(11) %fnodes(0.27) %except(0.00) %OExt(0.00) FutilePuned(12679)
41 e1c1
42, a6a7, 172, d 4, Iter 3, nps 51812, pvL 8, instab 0
pvStage 3, FH 0.86, etc0.00, null 0.00, nullH -1.#J, Hhit 0.24, eHhit 0.21, PHhit 0.54
maxD(11) %fnodes(0.44) %except(0.01) %OExt(0.00) FutilePuned(13001)
42 f7e6
43, a7a6, 172, d 4, Iter 4, nps 52600, pvL 7, instab 0
pvStage 3, FH 0.87, etc0.00, null 0.00, nullH -1.#J, Hhit 0.26, eHhit 0.21, PHhit 0.51
maxD(11) %fnodes(0.43) %except(0.03) %OExt(0.00) FutilePuned(16290)
43 e6f7
44, a6a7, 172, d 5, Iter 4, nps 53267, pvL 8, instab 0
pvStage 3, FH 0.85, etc0.00, null 0.00, nullH -1.#J, Hhit 0.22, eHhit 0.19, PHhit 0.52
maxD(12) %fnodes(0.36) %except(0.03) %OExt(0.01) FutilePuned(10939)
44 f7e6
45, a7a6, 171, d 5, Iter 5, nps 54167, pvL 7, instab 0
pvStage 3, FH 0.90, etc0.00, null 0.00, nullH -1.#J, Hhit 0.56, eHhit 0.50, PHhit 0.31
maxD(12) %fnodes(0.56) %except(0.02) %OExt(0.00) FutilePuned(32683)
45 e6f7
46, a6a7, 159, d 5, Iter 4, nps 54880, pvL 7, instab 0
pvStage 3, FH 0.86, etc0.00, null 0.00, nullH -1.#J, Hhit 0.38, eHhit 0.33, PHhit 0.45
maxD(12) %fnodes(0.54) %except(0.04) %OExt(0.00) FutilePuned(18976)
46 f7e6
47, a7a6, 159, d 5, Iter 5, nps 55387, pvL 8, instab 0
pvStage 3, FH 0.87, etc0.00, null 0.00, nullH -1.#J, Hhit 0.37, eHhit 0.29, PHhit 0.46
maxD(12) %fnodes(0.39) %except(0.03) %OExt(0.00) FutilePuned(19709)
47 e6f7
48, a6a7, 159, d 5, Iter 4, nps 55795, pvL10, instab 0
pvStage 3, FH 0.88, etc0.00, null 0.00, nullH -1.#J, Hhit 0.18, eHhit 0.13, PHhit 0.57
maxD(13) %fnodes(0.38) %except(0.03) %OExt(0.00) FutilePuned(13698)