Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: A faster move generator than previously known

Author: Gerd Isenberg

Date: 13:51:52 08/08/03

Go up one level in this thread


On August 08, 2003 at 16:30:22, Dieter Buerssner wrote:

>On August 08, 2003 at 16:15:26, Gerd Isenberg wrote:
>
>>Btw. if your row function is unsigned, it may cheaper to ask:
>>
>>    if( (row(u)-1) < (7-1) )
>
>Hmm, shouldn't it be
>  if( ((unsigned)row(u)-2) < (7-2) )

Hi Dieter,

is the unsigned cast necessary if row(int) is unsigned?
Ahh i see, macros instead of inlines ;-)

The original statement was for row 0..7 i guess

   if( row(u) != 0 && row(u) != 7 ) {
or
   if( row(u) > 0 && row(u) < 7 ) {
if i subtract 1, 0  becomes UINT_MAX and 7 becomes 6.
So below 6 or 7-1 seems correct to me.

>
>Or even better
>  if ((unsigned)u-16 < 5*16)
>

But of course, you even need no row(u) for this promote square condition.

>So, that even the not too clever optimizer can see it?

Yes, and it becomes more readable ;-)

But i prefere inliner:

isPromoteSquare(sq) and eventually a polymorph
isPromoteSquare(sq, color)

or eventually, with a square class:

sq->isPromoteSquare();
sq->isPromoteSquare(color);

Regards,
Gerd

>
>Regards,
>Dieter



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.