Amundsen

a Chess Engine Communication Protocol compliant open source chess engine under the GNU General Public License, written in C by John Bergbom. Started as college course project at the Department of Numerical Analysis and Computing Science, [|Royal Institute of Technology], [|Stockholm], a name change from Jonte to Amundsen took place between version 0.25 and 0.3, since the initial name was already used at FICS. Amundsen was first released in May 2004, as announced by Dann Corbit in Winboard Forum.
 * Home * Engines * Amundsen**
 * [[image:298px-Roald_Amundsen2.jpg width="238" height="384" link="http://en.wikipedia.org/wiki/File:Roald_Amundsen2.jpg"]] ||~  || **Amundsen**, (Jonte)

Victory awaits him, who has everything in order. Luck we call it. Defeat is definitely due for him, who has neglected to take the necessary precautions. Bad luck we call it. >> //Roald Amundsen// || toc =Description=
 * Amundsen at wheel of the [|Maud] ||~  ||^   ||

Rotated Bitboards
Amundsen uses rotated bitboards with 1/2 MiB lookup tables, indexed by 8-bit line occupancy, to determine sliding piece attacks, ignoring the possible fourfold reduction excluding the redundant outer squares. 

BitScan & PopCount
The memory bacchanal is attended by population count, bitscan forward and reverse with three 16-bit indexed, 64K lookup tables of double word integers, which is another 3/4 MiB. code format="cpp" int bits_in_16bits[65536]; int first_bit_in_16bits[65536]; int last_bit_in_16bits[65536];

/* This function returns the number of the first set bit in an int64. The search is done from LSB to MSB. */ int get_first_bitpos(int64 n) { if (first_bit_in_16bits[n & 0xffff] >= 0) return first_bit_in_16bits[n & 0xffff]; if (first_bit_in_16bits[(n >> 16) & 0xffff] >= 0) return first_bit_in_16bits[(n >> 16) & 0xffff] + 16; if (first_bit_in_16bits[(n >> 32) & 0xffff] >= 0) return first_bit_in_16bits[(n >> 32) & 0xffff] + 32; if (first_bit_in_16bits[(n >> 48) & 0xffff] >= 0) return first_bit_in_16bits[(n >> 48) & 0xffff] + 48; return -1; } code

Search
The search is PVS alpha-beta with transposition and refutation table inside an iterative deepening framework with aspiration windows, further using AEL-pruning à la Heinz, as well as LMR and IID in case of a missing hash move at PV-nodes. Checks, pawn moves to the 7th rank, and mate threatening moves are extended, killer- and history heuristic help to order moves, and a SEE swap routine is used to determine winning captures.

Evaluation
Amundsen's evaluation with a pawn structure cache features piece-square tables, and further considers mobility, passed pawns and hidden passed pawns, king safety through king piece tropism, and various features and defects such as outposts, rook on open file, seventh rank and behind passers, and bad bishop to name a few, and knows to trade pieces when ahead, but pawns when behind.

=See also=
 * Explorer
 * PolarChess
 * Siberian Chess

=Publications=
 * John Bergbom (**2004**). //Schackprogrammet Amundsen//. (2D1464 Större avancerad individuell kurs i datalogi) [|pdf] (Swedish)

=Forum Posts=
 * [|A new chess program] by Dann Corbit, Winboard Forum, May 22, 2004
 * [|Amundsen 0.3 and his book : problem ?] by Claude Dubois, Winboard Forum, May 24, 2004
 * [|Amundsen 0.35 exe] by Jim Ablett, Winboard Forum, August 25, 2004
 * [|Amundsen 05 Windows binaries] by Jim Ablett, Winboard Forum, September 14, 2005
 * [|Amundsen 0.65 (released on January 11th 2008)] by Denis P. Mendoza, Winboard Forum, January 15, 2008
 * [|Amundsen 0.65.1 Windows builds available] by Jim Ablett, Winboard Forum, February 23, 2008
 * [|Amundsen_075JA with illegal moves] by Günther Simon, Winboard Forum, January 18, 2009

=External Links=

Chess Engine
> [|Amundsen chess program | Testsuites] » Test-Positions
 * [|Amundsen chess program]
 * [|Amundsen] from WBEC Ridderkerk
 * [|Amundsen 0.80 32-bit] in CCRL 40/40

Misc

 * [|Roald Amundsen from Wikipedia]
 * [|Amundsen (disambiguation) from Wikipedia]

=References= =What links here?= include page="Amundsen" component="backlinks" limit="40"
 * Up one level**