From: H.G. Muller Date: Wed, 17 Nov 2010 14:35:45 +0000 (+0100) Subject: Suppress bad gatings in variant seirawan X-Git-Tag: 4.8Q~16 X-Git-Url: http://winboard.nl/cgi-bin?a=commitdiff_plain;h=5c485a9f63283f180e6a444d0ce9c22befa2aabb;p=fairymax.git 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. --- 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");