- #include "chess.h" 
- /* *INDENT-OFF* */ 
- /* 
-  ************************************************************ 
-  *                                                          * 
-  *  Pawn scoring terms.                                     * 
-  *                                                          * 
-  ************************************************************ 
-  */ 
- const int pawn_can_promote          = 525; 
- const int pawn_file_width           =   8; 
- const int pawn_unsupported[2]       = { -8, -4 }; 
- const int pawn_defects[2][8] = { 
-   { 0, 0, 0, 1, 2, 3, 0, 0 },               /* [black][8] */ 
-   { 0, 0, 3, 2, 1, 0, 0, 0 }                /* [white][8] */ 
- }; 
- const int passed_pawn[8] = { 0, 0, 0, 2, 6, 12, 21, 0 }; 
- const int passed_pawn_base[2] = { 4, 8 }; 
- const int passed_pawn_free_advance = 8; 
- const int passed_pawn_free_advance_1 = 5; 
- const int passed_pawn_defended = 3; 
- const int passed_pawn_defended_1 = 2; 
- const int passed_pawn_candidate[2][8] = { 
-   { 0, 2, 2,  6, 13, 32, 0, 0 },            /* [mg][rank] */ 
-   { 0, 5, 5, 11, 27, 65, 0, 0 }             /* [eg][rank] */ 
- }; 
- const int pawn_doubled[2][8] = { 
-   { 5,  8,  9,  9,  9,  9,  8,  5}, 
-   {17, 19, 19, 19, 19, 19, 19, 17} 
- }; 
- const int pawn_isolated[2][8] = { 
-   {14, 21, 23, 23, 23, 23, 21, 14}, 
-   {10, 14, 16, 16, 16, 16, 14, 10} 
- }; 
- const int pawn_backward[2][8] = { 
-   {12, 17, 19, 19, 19, 19, 17, 12}, 
-   { 8, 11, 16, 16, 16, 16, 11,  8} 
- }; 
- const int pawn_connected[8][8] = { 
-   {  0,   0,   0,   0,   0,   0,   0,   0}, 
-   {  0,   1,   1,   2,   2,   1,   1,   0}, 
-   {  1,   2,   2,   3,   3,   2,   2,   1}, 
-   {  3,   5,   5,   6,   6,   5,   5,   3}, 
-   { 11,  13,  13,  14,  14,  13,  13,  11}, 
-   { 25,  27,  27,  28,  28,  27,  27,  25}, 
-   { 48,  52,  52,  53,  53,  52,  52,  48}, 
-   {  0,   0,   0,   0,   0,   0,   0,   0} 
- }; 
- const int pval[2][2][64] = { 
-   {{ 0,   0,   0,   0,   0,   0,   0,   0, 
-    -10,   0,   0,   0,   0,   0,   0, -10, 
-    -10,   0,   0,   0,   0,   0,   0, -10, 
-    -10,   0,   6,  10,  10,   6,   0, -10,  /* [mg][black][64] */ 
-    -10,   0,  10,  21,  21,  10,   0, -10, 
-    -10,   0,   7,  11,  11,   7,   0, -10, 
-    -10,   0,   0,   0,   0,   0,   0, -10, 
-      0,   0,   0,   0,   0,   0,   0,   0 }, 
-   
-    { 0,   0,   0,   0,   0,   0,   0,   0, 
-    -10,   0,   0,   0,   0,   0,   0, -10, 
-    -10,   0,   7,  11,  11,   7,   0, -10, 
-    -10,   0,  10,  21,  21,  10,   0, -10,  /* [mg][white][64] */ 
-    -10,   0,   6,  10,  10,   6,   0, -10, 
-    -10,   0,   0,   0,   0,   0,   0, -10, 
-    -10,   0,   0,   0,   0,   0,   0, -10, 
-      0,   0,   0,   0,   0,   0,   0,   0 }}, 
-   
-   {{ 0,   0,   0,   0,   0,   0,   0,   0, 
-     -4,   1,   1,   1,   1,   1,   1,  -4, 
-     -4,   1,   1,   1,   1,   1,   1,  -4, 
-     -4,   1,   4,   6,   6,   4,   1,  -4,  /* [eg][black][64] */ 
-     -4,   1,   6,  12,  12,   6,   1,  -4, 
-     -4,   1,   5,   7,   7,   5,   1,  -4, 
-     -4,   1,   1,   1,   1,   1,   1,  -4, 
-      0,   0,   0,   0,   0,   0,   0,   0 }, 
-   
-    { 0,   0,   0,   0,   0,   0,   0,   0, 
-     -4,   1,   1,   1,   1,   1,   1,  -4, 
-     -4,   1,   5,   7,   7,   5,   1,  -4, 
-     -4,   1,   6,  12,  12,   6,   1,  -4,  /* [eg][white][64] */ 
-     -4,   1,   4,   6,   6,   4,   1,  -4, 
-     -4,   1,   1,   1,   1,   1,   1,  -4, 
-     -4,   1,   1,   1,   1,   1,   1,  -4, 
-      0,   0,   0,   0,   0,   0,   0,   0 }} 
- }; 
- /* 
-  ************************************************************ 
-  *                                                          * 
-  *  Knight scoring terms.                                   * 
-  *                                                          * 
-  ************************************************************ 
-  */ 
- const int king_tropism_n[8] = { 3, 3, 3, 2, 1, 0, 0, 0 }; 
- const int knight_outpost[2][64] = { 
-   { 0, 0, 0, 0, 0, 0, 0, 0, 
-     0, 0, 0, 0, 0, 0, 0, 0, 
-     0, 1, 4, 4, 4, 4, 1, 0, 
-     0, 2, 6, 8, 8, 6, 2, 0, 
-     0, 1, 4, 4, 4, 4, 1, 0,   /* [black][64] */ 
-     0, 0, 0, 0, 0, 0, 0, 0, 
-     0, 0, 0, 0, 0, 0, 0, 0, 
-     0, 0, 0, 0, 0, 0, 0, 0 }, 
-   
-   { 0, 0, 0, 0, 0, 0, 0, 0, 
-     0, 0, 0, 0, 0, 0, 0, 0, 
-     0, 0, 0, 0, 0, 0, 0, 0, 
-     0, 1, 4, 4, 4, 4, 1, 0, 
-     0, 2, 6, 8, 8, 6, 2, 0,   /* [white][64] */ 
-     0, 1, 4, 4, 4, 4, 1, 0, 
-     0, 0, 0, 0, 0, 0, 0, 0, 
-     0, 0, 0, 0, 0, 0, 0, 0 } 
- }; 
- const int nval[2][2][64] = { 
-   {{ -41, -29, -27, -15, -15, -27, -29, -41, 
-       -9,   4,  14,  20,  20,  14,   4,  -9, 
-       -7,  10,  23,  29,  29,  23,  10,  -7, 
-       -5,  12,  25,  32,  32,  25,  12,  -5,  /* [mg][black][64] */ 
-       -5,  10,  23,  28,  28,  23,  10,  -5, 
-       -7,  -2,  19,  19,  19,  19,  -2,  -7, 
-       -9,  -6,  -2,   0,   0,  -2,  -6,  -9, 
-      -31, -29, -27, -25, -25, -27, -29, -31 }, 
-   
-    { -31, -29, -27, -25, -25, -27, -29, -31, 
-       -9,  -6,  -2,   0,   0,  -2,  -6,  -9, 
-       -7,  -2,  19,  19,  19,  19,  -2,  -7, 
-       -5,  10,  23,  28,  28,  23,  10,  -5,  /* [mg][white][64] */ 
-       -5,  12,  25,  32,  32,  25,  12,  -5, 
-       -7,  10,  23,  29,  29,  23,  10,  -7, 
-       -9,   4,  14,  20,  20,  14,   4,  -9, 
-      -41, -29, -27, -15, -15, -27, -29, -41 }}, 
-   
-   {{ -41, -29, -27, -15, -15, -27, -29, -41, 
-       -9,   4,  14,  20,  20,  14,   4,  -9, 
-       -7,  10,  23,  29,  29,  23,  10,  -7, 
-       -5,  12,  25,  32,  32,  25,  12,  -5,  /* [eg][black][64] */ 
-       -5,  10,  23,  28,  28,  23,  10,  -5, 
-       -7,  -2,  19,  19,  19,  19,  -2,  -7, 
-       -9,  -6,  -2,   0,   0,  -2,  -6,  -9, 
-      -31, -29, -27, -25, -25, -27, -29, -31 }, 
-   
-    { -31, -29, -27, -25, -25, -27, -29, -31, 
-       -9,  -6,  -2,   0,   0,  -2,  -6,  -9, 
-       -7,  -2,  19,  19,  19,  19,  -2,  -7, 
-       -5,  10,  23,  28,  28,  23,  10,  -5,  /* [eg][white][64] */ 
-       -5,  12,  25,  32,  32,  25,  12,  -5, 
-       -7,  10,  23,  29,  29,  23,  10,  -7, 
-       -9,   4,  14,  20,  20,  14,   4,  -9, 
-      -41, -29, -27, -15, -15, -27, -29, -41 }} 
- }; 
- /* 
-  ************************************************************ 
-  *                                                          * 
-  *  Bishop scoring terms.                                   * 
-  *                                                          * 
-  ************************************************************ 
-  */ 
- const int bishop_trapped            = 174; 
- const int bishop_pawns_on_color[2]  = { 4, 6 }; 
- const int bishop_wing_pawns[2]      = { 18, 36 }; 
- const int bishop_pair[2]            = { 38, 56 }; 
- const int king_tropism_b[8] = { 2, 2, 2, 1, 0, 0, 0, 0 }; 
- const int bishop_outpost[2][64] = { 
-   { 0, 0, 0, 0, 0, 0, 0, 0, 
-     0, 0, 0, 0, 0, 0, 0, 0, 
-     0, 1, 3, 3, 3, 3, 1, 0, 
-     0, 3, 5, 5, 5, 5, 3, 0, 
-     0, 1, 2, 2, 2, 2, 1, 0,   /* [black][64] */ 
-     0, 0, 1, 1, 1, 1, 0, 0, 
-     0, 0, 0, 0, 0, 0, 0, 0, 
-     0, 0, 0, 0, 0, 0, 0, 0 }, 
-   
-   { 0, 0, 0, 0, 0, 0, 0, 0, 
-     0, 0, 0, 0, 0, 0, 0, 0, 
-     0, 0, 1, 1, 1, 1, 0, 0, 
-     0, 1, 2, 2, 2, 2, 1, 0, 
-     0, 3, 5, 5, 5, 5, 3, 0,   /* [white][64] */ 
-     0, 1, 3, 3, 3, 3, 1, 0, 
-     0, 0, 0, 0, 0, 0, 0, 0, 
-     0, 0, 0, 0, 0, 0, 0, 0 } 
- }; 
- const int bval[2][2][64] = { 
-   {{  0,   0,   0,   0,   0,   0,   0,   0, 
-       0,   4,   4,   4,   4,   4,   4,   0, 
-       0,   4,   8,   8,   8,   8,   4,   0, 
-       0,   4,   8,  12,  12,   8,   4,   0, 
-       0,   4,   8,  12,  12,   8,   4,   0,  /* [mg][black][64] */ 
-       0,   4,   8,   8,   8,   8,   4,   0, 
-       0,   4,   4,   4,   4,   4,   4,   0, 
-     -15, -15, -15, -15, -15, -15, -15, -15}, 
-   
-    {-15, -15, -15, -15, -15, -15, -15, -15, 
-       0,   4,   4,   4,   4,   4,   4,   0, 
-       0,   4,   8,   8,   8,   8,   4,   0, 
-       0,   4,   8,  12,  12,   8,   4,   0, 
-       0,   4,   8,  12,  12,   8,   4,   0,  /* [mg][white][64] */ 
-       0,   4,   8,   8,   8,   8,   4,   0, 
-       0,   4,   4,   4,   4,   4,   4,   0, 
-       0,   0,   0,   0,   0,   0,   0,   0}}, 
-   
-   {{  0,   0,   0,   0,   0,   0,   0,   0, 
-       0,   4,   4,   4,   4,   4,   4,   0, 
-       0,   4,   8,   8,   8,   8,   4,   0, 
-       0,   4,   8,  12,  12,   8,   4,   0, 
-       0,   4,   8,  12,  12,   8,   4,   0,  /* [eg][black][64] */ 
-       0,   4,   8,   8,   8,   8,   4,   0, 
-       0,   4,   4,   4,   4,   4,   4,   0, 
-     -15, -15, -15, -15, -15, -15, -15, -15}, 
-   
-    {-15, -15, -15, -15, -15, -15, -15, -15, 
-       0,   4,   4,   4,   4,   4,   4,   0, 
-       0,   4,   8,   8,   8,   8,   4,   0, 
-       0,   4,   8,  12,  12,   8,   4,   0, 
-       0,   4,   8,  12,  12,   8,   4,   0,  /* [eg][white][64] */ 
-       0,   4,   8,   8,   8,   8,   4,   0, 
-       0,   4,   4,   4,   4,   4,   4,   0, 
-       0,   0,   0,   0,   0,   0,   0,   0}} 
- }; 
- /* 
-  ************************************************************ 
-  *                                                          * 
-  *  Rook scoring terms.                                     * 
-  *                                                          * 
-  ************************************************************ 
-  */ 
- const int rook_on_7th[2]          = { 25, 35 }; 
- const int rook_connected_7th[2]   = {  6, 10 }; 
- const int rook_open_file[2]       = { 35, 20 }; 
- const int rook_half_open_file[2]  = { 10, 10 }; 
- const int king_tropism_r[8] = { 4, 4, 3, 2, 1, 1, 1, 1 }; 
- /* 
-  ************************************************************ 
-  *                                                          * 
-  *  Queen scoring terms.                                    * 
-  *                                                          * 
-  ************************************************************ 
-  */ 
- const int king_tropism_q[8] = { 6, 6, 5, 4, 3, 2, 2, 2 }; 
- const int qval[2][2][64] = { 
-    {{ 0,   0,   0,   0,   0,   0,   0,   0, 
-       0,   0,   4,   4,   4,   4,   0,   0, 
-       0,   4,   4,   6,   6,   4,   4,   0, 
-       0,   4,   6,   8,   8,   6,   4,   0, 
-       0,   4,   6,   8,   8,   6,   4,   0,   /* [mg][black][64] */ 
-       0,   4,   4,   6,   6,   4,   4,   0, 
-       0,   0,   4,   4,   4,   4,   0,   0, 
-       0,   0,   0,   0,   0,   0,   0,   0 }, 
-   
-     { 0,   0,   0,   0,   0,   0,   0,   0, 
-       0,   0,   4,   4,   4,   4,   0,   0, 
-       0,   4,   4,   6,   6,   4,   4,   0, 
-       0,   4,   6,   8,   8,   6,   4,   0, 
-       0,   4,   6,   8,   8,   6,   4,   0,   /* [mg][white][64] */ 
-       0,   4,   4,   6,   6,   4,   4,   0, 
-       0,   0,   4,   4,   4,   4,   0,   0, 
-       0,   0,   0,   0,   0,   0,   0,   0 }}, 
-   
-    {{ 0,   0,   0,   0,   0,   0,   0,   0, 
-       0,   0,   4,   4,   4,   4,   0,   0, 
-       0,   4,   4,   6,   6,   4,   4,   0, 
-       0,   4,   6,   8,   8,   6,   4,   0, 
-       0,   4,   6,   8,   8,   6,   4,   0,   /* [eg][black][64] */ 
-       0,   4,   4,   6,   6,   4,   4,   0, 
-       0,   0,   4,   4,   4,   4,   0,   0, 
-       0,   0,   0,   0,   0,   0,   0,   0 }, 
-   
-     { 0,   0,   0,   0,   0,   0,   0,   0, 
-       0,   0,   4,   4,   4,   4,   0,   0, 
-       0,   4,   4,   6,   6,   4,   4,   0, 
-       0,   4,   6,   8,   8,   6,   4,   0, 
-       0,   4,   6,   8,   8,   6,   4,   0,   /* [eg][white][64] */ 
-       0,   4,   4,   6,   6,   4,   4,   0, 
-       0,   0,   4,   4,   4,   4,   0,   0, 
-       0,   0,   0,   0,   0,   0,   0,   0 }} 
- }; 
- /* 
-  ************************************************************ 
-  *                                                          * 
-  *  King scoring terms.                                     * 
-  *                                                          * 
-  ************************************************************ 
-  */ 
- int king_safety[16][16]; 
- const int king_safety_mate_threat = 600; 
- const int king_king_tropism       =  10; 
- const int open_file[8]            = { 6, 5, 4, 4, 4, 4, 5, 6 }; 
- const int half_open_file[8] = { 4, 4, 3, 3, 3, 3, 4, 4 }; 
- const int safety_vector[16] = { 
-    0,  7, 14, 21, 28, 35, 42,  49, 
-   56, 63, 70, 77, 84, 91, 98, 105 
- }; 
- const int tropism_vector[16] = { 
-    0,  1,  2,  3,   4,   5,  11,  20, 
-   32, 47, 65, 86, 110, 137, 167, 200 
- }; 
- const int kval[2][64] = { 
-    {-40, -40, -40, -40, -40, -40, -40, -40, 
-     -40, -10, -10, -10, -10, -10, -10, -40, 
-     -40, -10,  60,  60,  60,  60, -10, -40, 
-     -40, -10,  60,  60,  60,  60, -10, -40, 
-     -40, -10,  40,  40,  40,  40, -10, -40,   /* [black][64] */ 
-     -40, -10,  20,  20,  20,  20, -10, -40, 
-     -40, -10, -10, -10, -10, -10, -10, -40, 
-     -40, -40, -40, -40, -40, -40, -40, -40 }, 
-   
-    {-40, -40, -40, -40, -40, -40, -40, -40, 
-     -40, -10, -10, -10, -10, -10, -10, -40, 
-     -40, -10,  20,  20,  20,  20, -10, -40, 
-     -40, -10,  40,  40,  40,  40, -10, -40, 
-     -40, -10,  60,  60,  60,  60, -10, -40,   /* [white][64] */ 
-     -40, -10,  60,  60,  60,  60, -10, -40, 
-     -40, -10, -10, -10, -10, -10, -10, -40, 
-     -40, -40, -40, -40, -40, -40, -40, -40 } 
- }; 
- /* 
-  ************************************************************ 
-  *                                                          * 
-  *  Miscellaneous evaluation constants.                     * 
-  *                                                          * 
-  ************************************************************ 
-  */ 
- const int bad_trade = 90; 
- const int dark_corner[2] =  { FILEA, FILEH }; 
- const int light_corner[2] = { FILEH, FILEA }; 
- const int direction[2] =    { -8, 8 }; 
- const char square_color[64] = { 
-   1, 0, 1, 0, 1, 0, 1, 0, 
-   0, 1, 0, 1, 0, 1, 0, 1, 
-   1, 0, 1, 0, 1, 0, 1, 0, 
-   0, 1, 0, 1, 0, 1, 0, 1, 
-   1, 0, 1, 0, 1, 0, 1, 0, 
-   0, 1, 0, 1, 0, 1, 0, 1, 
-   1, 0, 1, 0, 1, 0, 1, 0, 
-   0, 1, 0, 1, 0, 1, 0, 1 
- }; 
- /* 
-  ************************************************************ 
-  *                                                          * 
-  *  Opening phase development terms.                        * 
-  *                                                          * 
-  ************************************************************ 
-  */ 
- const int development_thematic      =     12; 
- const int development_losing_castle =     20; 
- const int development_not_castled   =     20; 
- const int wtm_bonus[2]              = { 5, 8 }; 
- /* 
-  ************************************************************ 
-  *                                                          * 
-  *  Skill command constants (should not be changed)         * 
-  *                                                          * 
-  ************************************************************ 
-  */ 
- uint64_t burner[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 
- const int burnc[10] = {128000, 64000, 32400, 15200, 7600, 
-                          3800,  1960,  1040,   480,  140}; 
- /* 
-  ************************************************************ 
-  *                                                          * 
-  *  Mop-up scoring terms.  These are used in pawnless end-  * 
-  *  games to mate the weaker side.  There is a special PST  * 
-  *  B+N vs lone king to make it easier to win with very     * 
-  *  shallow search depths.                                  * 
-  *                                                          * 
-  ************************************************************ 
-  */ 
- const char b_n_mate_dark_squares[64] = { 
-   99, 90, 80, 70, 60, 50, 40, 30, 
-   90, 80, 70, 60, 50, 40, 30, 40, 
-   80, 70, 60, 50, 40, 30, 40, 50, 
-   70, 60, 50, 40, 30, 40, 50, 60, 
-   60, 50, 40, 30, 40, 50, 60, 70, 
-   50, 40, 30, 40, 50, 60, 70, 80, 
-   40, 30, 40, 50, 60, 70, 80, 90, 
-   30, 40, 50, 60, 70, 80, 90, 99 
- }; 
- const char b_n_mate_light_squares[64] = { 
-   30, 40, 50, 60, 70, 80, 90, 99, 
-   40, 30, 40, 50, 60, 70, 80, 90, 
-   50, 40, 30, 40, 50, 60, 70, 80, 
-   60, 50, 40, 30, 40, 50, 60, 70, 
-   70, 60, 50, 40, 30, 40, 50, 60, 
-   80, 70, 60, 50, 40, 30, 40, 50, 
-   90, 80, 70, 60, 50, 40, 30, 40, 
-   99, 90, 80, 70, 60, 50, 40, 30 
- }; 
- const int mate[64] = { 
-   200, 180, 160, 140, 140, 160, 180, 200, 
-   180, 160, 140, 120, 120, 140, 160, 180, 
-   160, 140, 120, 100, 100, 120, 140, 160, 
-   140, 120, 100, 100, 100, 100, 120, 140, 
-   140, 120, 100, 100, 100, 100, 120, 140, 
-   160, 140, 120, 100, 100, 120, 140, 160, 
-   180, 160, 140, 120, 120, 140, 160, 180, 
-   200, 180, 160, 140, 140, 160, 180, 200 
- }; 
- /* *INDENT-ON* */ 
-