From 5c485a9f63283f180e6a444d0ce9c22befa2aabb Mon Sep 17 00:00:00 2001 From: H.G. Muller Date: Wed, 17 Nov 2010 15:35:45 +0100 Subject: [PATCH] Suppress bad gatings in variant seirawan For moves done by the engine, the QS score after gating is compared to the original score of the move (which did not consider gating), and if it is much lower, the gating is cancelled. --- fairymax.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/fairymax.c b/fairymax.c index 205e89b..85783a1 100644 --- a/fairymax.c +++ b/fairymax.c @@ -226,7 +226,7 @@ int k,q,l,e,E,z,n; /* (q,l)=window, e=current eval. score, E=e.p. sqr.*/ Fifty = t|p<3?0:Fifty+1; sp=ps; if(!(u&32)&PromPiece&(K&112)==(k?0:112)) - prom=b[K]=39+k-PromPiece,J++,pl[k+14-PromPiece]--; /* gating */ + prom=b[K]=39+k-PromPiece,J+=333,pl[k+14-PromPiece]--; /* gating */ return l;} /* & not in check, signal */ v=m; /* (prevent fail-lows on */ } /* K-capt. replies) */ @@ -550,6 +550,8 @@ int main(int argc, char **argv) N=0;K=I; if (D(Side,-I,I,Q,O,LL|S,3)==I) { Side ^= BLACK^WHITE; + if(b[K]&&Score+D(Side,-I,I,Q,2*S,2*S,2)>S) + prom=b[K]=0,J-=333,pl[30-Side-PromPiece]++; /* undo bad gating */ if(UnderProm>=0 && UnderProm != L) { printf("tellics I hate under-promotions!\n"); printf("resign { underpromotion } \n"); -- 1.7.0.4