int num_bits[65536];int lsb[65536];int msb[65536];/*****************************************************************************
* *
* int GetLSBFast(Bitmap b) *
* *
* Returns the least significant bit in a bitmap (1-64), or 0 if no bit set. *
* Assumes lsb[] is initialized. Much faster than GetLSBSlow(). *
* *
*****************************************************************************/int GetLSBFast(Bitmap b){int r = lsb[(int)(b &65535)];if(r)return r;
b >>=16;
r = lsb[(int)(b &65535)];if(r)return r+16;
b >>=16;
r = lsb[(int)(b &65535)];if(r)return r+32;
b >>=16;
r = lsb[(int)b];if(r)return r+48;return0;}
^ The Portrait of Michel de Nostredame (Nostradamus), a French Renaissance Medicine & Astrologer, painted by his son César de Nostredame (1553-1630?) about 1614 A.D. 16cm x 18cm. (cf. Jean Boyer, “Deux peintres oubliés du XVIe siècle: Etienne Martellange et César de Nostredame”, Bulletin de la Société de l’Histoire de l’art français, Année 1971 (1972), pp.13-20)
a Chess Engine Communication Protocol compliant open source chess engine under the GNU General Public License, written by James Swafford in C++ as a better C. As successor of Galahad, Prophet is a traditional bitmap based program. Prophet was used in experiments with TD-Leaf [1] when James Swafford was undergraduate at East Carolina University [2], and testbed for parallel search algorithms as topic of its author's Masters project [3]. In September 2017, Prophet3 was released as open source under the MIT License, using magic bitboards [4].
Table of Contents
Description
Bitboard Infrastructure
Rotated Bitboards
Prophet2 uses rotated bitboards with 1/2 MiB lookup tables, indexed by square and 8-bit line occupancy, to determine sliding piece attacks, ignoring the possible fourfold reduction excluding the redundant outer squares [6].BitScan & PopCount
Similar to Amundsen, the memory bacchanal is attended by population count, bitscan forward (GetLSBFast) and reverse (GetMSBFast) with three 16-bit indexed, 64K lookup tables of double word integers, another 3/4 MiB competing for the caches [7]:Search
Prophet's search is alpha-beta PVS with transposition table inside an iterative deepening framework with fractional plies and aspiration windows of ± 1/3 pawn value. Selectivity is due to adaptive null move pruning, futility and extended futility pruning, and fractional extensions on checks, single replies, passed pawn advances and recaptures. Beside TT and keeping a linked list of PVs on the Stack, Move ordering considers killer and history heuristic, as well as MVV-LVA and SEE for captures.Evaluation
The evaluation in centipawn resolution determines a score based on material balance and piece-square tables, and further considers various positional features, such as development, mobility, king safety and pawn structure, and trapped pieces.Tournament Play
Prophet played five CCT Tournaments, from CCT7 in 2005, until CCT11 in 2009, three ACCA Americas' Computer Chess Championships, ACCA 2006, ACCA 2007 and ACCA 2008, and the WCRCC 2008 Second Annual ACCA World Computer Rapid Chess Championship.Selected Games
CCT11, round 2, Prophet - NoonianChess [8]See also
Publications
Forum Posts
External Links
Chess Engine
Misc
lineup: Jimmy Herring, T Lavitz, Alphonso Johnson, Billy Cobham
References
What links here?
Up one level