Author: Uri Blass
Date: 12:37:03 01/10/03
Go up one level in this thread
On January 10, 2003 at 15:31:05, Bas Hamstra wrote:
>Hi Uri,
>
>Personally I use a lookup table for 8 bits at a time (count each row). You can
>see a bitboard as an array of 8 unsigned chars.
>
>BB Test = 423434234ui64;
>int Count = PopCnt(Test);
>
>inline int PopCnt(BB BitBoard)
>
>{ unsigned char* p = (unsigned char*) BitBoard;
> return PopCnt8[p[0]] + PopCnt8[p[1]] ... + PopCnt8[p[7]];
>}
>
>You have to create an small precalculated array PopCnt8[256] for this. It is not
>the absolute fastest, but also not much slower than that.
>
>Bas.
Thasks but I have already that array for other purpose so I do not need to
create it.
I simply thought that if there is a simple way to do things faster I can do it.
I want to use it to calculate the number of protected passed pawns because as
first step I plan to give a static bonus for passed pawn that is protected by a
pawn(I may change it later to something better but passed pawn that is protected
by a pawn is usually good not like other passed pawns that may be often bad).
I admit that in this case I can add only 5 numbers because protected passed pawn
cannot be in the first second or last rank so maybe your idea is faster.
Uri
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.